Construct a proof of lits[0] ∨ ... ∨ lits[n] → target
, given proofs (casesProofs
) of lits[i] → target
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a proof of lits[0] ∨ ... ∨ lits[n]
, given a proof
of lits[i]
Equations
- One or more equations did not get rendered due to their size.
Instances For
Construct a proof of lits[0] ∨ ... ∨ lits[n]
, given a proof
of the subclause consisting of the last i
literals
Equations
- One or more equations did not get rendered due to their size.
Instances For
Given a list l
of propositions, constructs the proposition l[0] ∧ ... ∧ l[n]
Equations
- Duper.andBuild [] = Lean.throwError (Lean.toMessageData "Cannot build an empty conjunction")
- Duper.andBuild [l1] = pure l1
- Duper.andBuild (l1 :: restL) = do let __do_lift ← Duper.andBuild restL pure (Lean.mkApp2 (Lean.mkConst `And) l1 __do_lift)
Instances For
Given a proof of a conjunction with n
conjuncts, constructs a proof of i
-th conjunct
Equations
- One or more equations did not get rendered due to their size.
Instances For
Assuming e
has the form e1 ∧ e2 ∧ ... ∧ en
, returns an array #[e1, e2, ... en]
.
Note: If e has the form (e1a ∧ e1b) ∧ e2 ∧ ... ∧ en
, then the conjunction (e1a ∧ e1b)
will
be considered e1
(and the conjunction e1 will not be broken down further). This decision is made
to reflect the form of the conjunction assumed by andGet
Assuming e
has the form e1 ∧ e2 ∧ ... ∧ en
, returns a list [e1, e2, ... en]
.
Note: If e
has the form (e1a ∧ e1b) ∧ e2 ∧ ... ∧ en
, then the conjunction (e1a ∧ e1b)
will
be considered e1
(and the conjunction e1
will not be broken down further). This decision is made
to reflect the form of the conjunction assumed by andGet
Instances For
Given a proof prf
of type e
which has the form ¬(p1 ∧ p2 ∧ ... pn)
, constructs a proof of ¬p1 ∨ ¬p2 ∨ ... ¬pn