Map a function over the predicates of a hypothesis list.
Equations
- TLA.ProofMode.mapHypPreds f hyps = List.map (fun (h : TLA.ProofMode.NamedPred σ) => { name := h.name, pred := f h.pred }) hyps
Instances For
theorem
TLA.ProofMode.Entails_later_monotone
{σ : Type u}
{hyps : List (NamedPred σ)}
{goal : pred σ}
:
Entails hyps goal → Entails (mapHypPreds later hyps) [tlafml|◯goal]
theorem
TLA.ProofMode.Entails_always_monotone
{σ : Type u}
{hyps : List (NamedPred σ)}
{goal : pred σ}
:
Entails hyps goal → Entails (mapHypPreds always hyps) [tlafml|□goal]
theorem
TLA.ProofMode.Entails_eventually_always_monotone
{σ : Type u}
{hyps : List (NamedPred σ)}
{goal : pred σ}
:
Entails hyps goal → Entails (mapHypPreds (fun (p : pred σ) => [tlafml|◇□p]) hyps) [tlafml|◇□goal]
tla_monotone removes a common monotone temporal prefix from the proof-mode
context and goal.
For example, if every temporal hypothesis and the goal are prefixed by □, then
tla_monotone
turns a context such as hp : □ p, hq : □ q with goal □ r into
hp : p, hq : q with goal r.
It also supports ◯ and ◇□ over multiple hypotheses, and the single-hypothesis
cases for ◇ and □◇. Outside proof mode it applies the corresponding raw
monotonicity theorem:
tla_monotone
changes a raw goal □ p |-tla- □ q to p |-tla- q.
Equations
- TLA.ProofMode.tlaMonotoneTac = Lean.ParserDescr.node `TLA.ProofMode.tlaMonotoneTac 1024 (Lean.ParserDescr.nonReservedSymbol "tla_monotone" false)