Source-pinned research

Research proof index

Search theorem names, mathematical ideas, modules, topics, projects, and role-labelled researchers. Open a result for its complete indexed Lean declaration and source record.

This index contains 219 research declarations. Search 10,000 more complete Mathlib declarations.

1 topic

219 results

Clear filters
Project-declaredLean 4.31.0

Map M for M

List.mapM_forM

Project documentation

our own variant of map_congr, for filterMap -/ public theorem filterMap_congr {f g : α → Option β} : ∀ {l : List α}, (∀ x ∈ l, f x = g x) → filterMap f l = filterMap g l | [], _ => rfl | a :: l, h => by let ⟨h₁, h₂⟩ := forall_mem_cons.1 h rw [filterMap, filterMap, h₁, filterMap_congr h₂] public theorem filterMap_empty_iff_all_none {f : α → Option β} {xs :...

authorizationprogram verificationsemantics

Source project: Cedar Specification

Person-level attribution pending.

View proof record
Project-declaredLean 4.31.0

Map M implies forall₂

List.mapM_implies_forall₂

Plain-language statement

Introduces forall₂ through the input output relation of a f through List.mapM. This is slightly stronger than the forward direction of mapM_ok_iff_forall₂ since it allowed an extra x ∈ xs condition in h.

authorizationprogram verificationsemantics

Source project: Cedar Specification

Person-level attribution pending.

View proof record
Project-declaredLean 4.31.0

Map M' error implies exists error

List.mapM'_error_implies_exists_error

Plain-language statement

The converse is not true: counterexample xs is [1, 2] and f is Except.error. In that case, f 2 = .error 2 but xs.mapM' f = .error 1. But for a limited converse, see element_error_implies_mapM_error

authorizationprogram verificationsemantics

Source project: Cedar Specification

Person-level attribution pending.

View proof record