Laws of SPred #
This module contains lemmas about SPred that need to be proved by induction on σs.
That is, they need to proved by appealing to the model of SPred and cannot
be derived without doing so.
Std.Do.SPred.DerivedLaws has some more laws that are derivative of what follows.
Entailment #
Bientailment #
Pure #
Conjunction #
Disjunction #
Implication #
Quantifiers #
Curry #
theorem
Std.Do.SPred.and_curry
{σs : List (Type u)}
{P Q : SVal.StateTuple σs → Prop}
:
((SVal.curry fun (t : SVal.StateTuple σs) => { down := P t }) ∧ SVal.curry fun (t : SVal.StateTuple σs) => { down := Q t }) ⊣⊢ₛ SVal.curry fun (t : SVal.StateTuple σs) => { down := P t ∧ Q t }
theorem
Std.Do.SPred.or_curry
{σs : List (Type u)}
{P Q : SVal.StateTuple σs → Prop}
:
((SVal.curry fun (t : SVal.StateTuple σs) => { down := P t }) ∨ SVal.curry fun (t : SVal.StateTuple σs) => { down := Q t }) ⊣⊢ₛ SVal.curry fun (t : SVal.StateTuple σs) => { down := P t ∨ Q t }
theorem
Std.Do.SPred.imp_curry
{σs : List (Type u)}
{P Q : SVal.StateTuple σs → Prop}
:
((SVal.curry fun (t : SVal.StateTuple σs) => { down := P t }) → SVal.curry fun (t : SVal.StateTuple σs) => { down := Q t }) ⊣⊢ₛ SVal.curry fun (t : SVal.StateTuple σs) => { down := P t → Q t }