Module mathcomp.classical.contra
From mathcomp Require Import ssreflect ssrfun ssrbool eqtype ssrnat seq.From mathcomp Require Import boolp.
Unset SsrOldRewriteGoalsOrder.
Set Implicit Arguments.
Unset Strict Implicit.
Unset Printing Implicit Defensive.
Source code
Variant
Source code
Source code
Definition
Internals.move_viewP : forall {S T : Type}, Internals.move_view S T -> S -> T Internals.move_viewP is not universe polymorphic Arguments Internals.move_viewP {S T}%_type_scope mv _ Internals.move_viewP is transparent Expands to: Constant mathcomp.classical.contra.Internals.move_viewP Declared in library mathcomp.classical.contra, line 64, characters 11-21
Source code
Hint View for move/ move_viewP|2.
Variant
Source code
Source code
Definition
Internals.equivT_refl : forall S : Type, Internals.equivT S S Internals.equivT_refl is not universe polymorphic Arguments Internals.equivT_refl S%_type_scope Internals.equivT_refl is transparent Expands to: Constant mathcomp.classical.contra.Internals.equivT_refl Declared in library mathcomp.classical.contra, line 73, characters 11-22
Source code
Definition
Internals.equivT_transl : forall {S T U : Type}, Internals.equivT S T -> Internals.equivT S U -> Internals.equivT T U Internals.equivT_transl is not universe polymorphic Arguments Internals.equivT_transl {S T U}%_type_scope _ _ Internals.equivT_transl is transparent Expands to: Constant mathcomp.classical.contra.Internals.equivT_transl Declared in library mathcomp.classical.contra, line 74, characters 11-24
Source code
fun ( : equivT S T) ( : equivT S U) =>
let: EquivT S_T T_S := st in
let: EquivT S_U U_S := su in
EquivT (S_U \o T_S) (S_T \o U_S).
Definition
Internals.equivT_sym : forall {S T : Type}, Internals.equivT S T -> Internals.equivT T S Internals.equivT_sym is not universe polymorphic Arguments Internals.equivT_sym {S T}%_type_scope _ Internals.equivT_sym is transparent Expands to: Constant mathcomp.classical.contra.Internals.equivT_sym Declared in library mathcomp.classical.contra, line 79, characters 11-21
Source code
equivT_transl^~ (equivT_refl S).
Definition
Internals.equivT_trans : forall {S T U : Type}, Internals.equivT S T -> Internals.equivT T U -> Internals.equivT S U Internals.equivT_trans is not universe polymorphic Arguments Internals.equivT_trans {S T U}%_type_scope _ _ Internals.equivT_trans is transparent Expands to: Constant mathcomp.classical.contra.Internals.equivT_trans Declared in library mathcomp.classical.contra, line 81, characters 11-23
Source code
equivT_transl \o equivT_sym.
Definition
Internals.equivT_transr : forall {S T U : Type}, Internals.equivT S T -> Internals.equivT U S -> Internals.equivT U T Internals.equivT_transr is not universe polymorphic Arguments Internals.equivT_transr {S T U}%_type_scope eqST _ Internals.equivT_transr is transparent Expands to: Constant mathcomp.classical.contra.Internals.equivT_transr Declared in library mathcomp.classical.contra, line 83, characters 11-24
Source code
Source code
equivT_trans^~ eqST.
Definition
Internals.equivT_Prop : forall P Q : Prop, Internals.equivT P Q <-> Internals.equivT P Q Internals.equivT_Prop is not universe polymorphic Arguments Internals.equivT_Prop (P Q)%_type_scope Internals.equivT_Prop is transparent Expands to: Constant mathcomp.classical.contra.Internals.equivT_Prop Declared in library mathcomp.classical.contra, line 85, characters 11-22
Source code
Proof.
Internals.equivT_LR : forall {S T : Type}, Internals.equivT S T -> S -> T Internals.equivT_LR is not universe polymorphic Arguments Internals.equivT_LR {S T}%_type_scope eq _ Internals.equivT_LR is transparent Expands to: Constant mathcomp.classical.contra.Internals.equivT_LR Declared in library mathcomp.classical.contra, line 87, characters 11-20
Source code
let: EquivT S_T _ := eq in S_T.
Definition
Internals.equivT_RL : forall {S T : Type}, Internals.equivT S T -> T -> S Internals.equivT_RL is not universe polymorphic Arguments Internals.equivT_RL {S T}%_type_scope eq _ Internals.equivT_RL is transparent Expands to: Constant mathcomp.classical.contra.Internals.equivT_RL Declared in library mathcomp.classical.contra, line 89, characters 11-20
Source code
let: EquivT _ T_S := eq in T_S.
Hint View for move/ equivT_LR|2 equivT_RL|2.
Hint View for apply/ equivT_RL|2 equivT_LR|2.
Structure
Source code
ForallSort {
Source code
Notation
Source code
Polymorphic Definition
Internals.TypeForall@{u u0} : forall A : Type, Internals.forallSort A Internals.TypeForall is universe polymorphic Arguments Internals.TypeForall A%_type_scope Internals.TypeForall is transparent Expands to: Constant mathcomp.classical.contra.Internals.TypeForall Declared in library mathcomp.classical.contra, line 127, characters 23-33
Source code
Canonical TypeForall.
Canonical
Internals.PropForall : forall A : Type, Internals.forallSort A Internals.PropForall is not universe polymorphic Arguments Internals.PropForall A%_type_scope Internals.PropForall is transparent Expands to: Constant mathcomp.classical.contra.Internals.PropForall Declared in library mathcomp.classical.contra, line 130, characters 10-20
Source code
Canonical
Internals.SetForall : forall A : Set, Internals.forallSort A Internals.SetForall is not universe polymorphic Arguments Internals.SetForall A%_type_scope Internals.SetForall is transparent Expands to: Constant mathcomp.classical.contra.Internals.SetForall Declared in library mathcomp.classical.contra, line 134, characters 10-19
Source code
Definition
Internals.Forall : forall {A : Type} {S : Internals.forallSort A}, (A -> Internals.forall_sort S) -> Internals.forall_sort S Internals.Forall is not universe polymorphic Arguments Internals.Forall {A}%_type_scope {S} _%_function_scope Internals.Forall is transparent Expands to: Constant mathcomp.classical.contra.Internals.Forall Declared in library mathcomp.classical.contra, line 136, characters 11-17
Source code
let: ForallSort _ F := S return (A -> S) -> S in F.
Notation
Source code
(Forall (fun => .. (Forall (fun => T)) ..))
(at level 200, x binder, z binder, T at level 200,
format "'[hv' '\Forall' '[' x .. z , ']' '/ ' T ']'") : type_scope.
Tactic Notation "ForallI" ssrpatternarg(pat) :=
let F := fresh "F" in ssrmatching.ssrpattern pat => F;
case: F / (@erefl _ F : Forall _ = _).
Tactic Notation "ForallI" := ForallI (forall , _).
Structure
Source code
Source code
Definition
Internals.wrap4Prop : Prop -> Internals.wrappedProp Internals.wrap4Prop is not universe polymorphic Arguments Internals.wrap4Prop unwrap_Prop%_type_scope Internals.wrap4Prop is transparent Expands to: Constant mathcomp.classical.contra.Internals.wrap4Prop Declared in library mathcomp.classical.contra, line 172, characters 11-20
Source code
Definition
Internals.wrap3Prop : Prop -> Internals.wrappedProp Internals.wrap3Prop is not universe polymorphic Arguments Internals.wrap3Prop unwrap_Prop%_type_scope Internals.wrap3Prop is transparent Expands to: Constant mathcomp.classical.contra.Internals.wrap3Prop Declared in library mathcomp.classical.contra, line 173, characters 11-20
Source code
Definition
Internals.wrap2Prop : Prop -> Internals.wrappedProp Internals.wrap2Prop is not universe polymorphic Arguments Internals.wrap2Prop unwrap_Prop%_type_scope Internals.wrap2Prop is transparent Expands to: Constant mathcomp.classical.contra.Internals.wrap2Prop Declared in library mathcomp.classical.contra, line 174, characters 11-20
Source code
Canonical
Internals.wrap1Prop : Prop -> Internals.wrappedProp Internals.wrap1Prop is not universe polymorphic Arguments Internals.wrap1Prop P%_type_scope Internals.wrap1Prop is transparent Expands to: Constant mathcomp.classical.contra.Internals.wrap1Prop Declared in library mathcomp.classical.contra, line 175, characters 10-19
Source code
Polymorphic Structure
Source code
Source code
Polymorphic Definition
Internals.wrap4Type@{i} : Type -> Internals.wrappedType Internals.wrap4Type is universe polymorphic Arguments Internals.wrap4Type unwrap_Type%_type_scope Internals.wrap4Type is transparent Expands to: Constant mathcomp.classical.contra.Internals.wrap4Type Declared in library mathcomp.classical.contra, line 178, characters 23-32
Source code
Polymorphic Definition
Internals.wrap3Type@{i} : Type -> Internals.wrappedType Internals.wrap3Type is universe polymorphic Arguments Internals.wrap3Type unwrap_Type%_type_scope Internals.wrap3Type is transparent Expands to: Constant mathcomp.classical.contra.Internals.wrap3Type Declared in library mathcomp.classical.contra, line 179, characters 23-32
Source code
Polymorphic Definition
Internals.wrap2Type@{i} : Type -> Internals.wrappedType Internals.wrap2Type is universe polymorphic Arguments Internals.wrap2Type unwrap_Type%_type_scope Internals.wrap2Type is transparent Expands to: Constant mathcomp.classical.contra.Internals.wrap2Type Declared in library mathcomp.classical.contra, line 180, characters 23-32
Source code
Polymorphic Definition
Internals.wrap1Type@{i} : Type -> Internals.wrappedType Internals.wrap1Type is universe polymorphic Arguments Internals.wrap1Type T%_type_scope Internals.wrap1Type is transparent Expands to: Constant mathcomp.classical.contra.Internals.wrap1Type Declared in library mathcomp.classical.contra, line 181, characters 23-32
Source code
Canonical wrap1Type.
Lemma
Source code
P =1 Q -> Forall P = Forall Q.
Proof.
Structure
Source code
Source code
NegatedProp {
Source code
Structure
Source code
Source code
Local Notation
Source code
Local Notation
Source code
Local Notation
Source code
Lemma
Source code
Proof.
Source code
Proof.
Internals.lax_notI : forall {t : bool} {nP : Prop} (P : Internals.negatedProp t nP), Internals.unwrap_Prop (Internals.negated_Prop P) = (~ nP) Internals.lax_notI is not universe polymorphic Arguments Internals.lax_notI {t}%_bool_scope {nP}%_type_scope P Internals.lax_notI is transparent Expands to: Constant mathcomp.classical.contra.Internals.lax_notI Declared in library mathcomp.classical.contra, line 270, characters 11-19
Source code
#[warn(note="A different `notE` used to be provided by `boolp.v` before MathComp-Analysis 1.15.0.")]
Definition
Internals.notE : forall {nP : Prop} (P : Internals.negatedProp false nP), (~ Internals.unwrap_Prop (Internals.negated_Prop P)) = nP Internals.notE is not universe polymorphic Arguments Internals.notE {nP}%_type_scope P Internals.notE is transparent Expands to: Constant mathcomp.classical.contra.Internals.notE Declared in library mathcomp.classical.contra, line 273, characters 11-15
Source code
#[warn(note="A different `notP` used to be provided by `boolp.v` before MathComp-Analysis 1.15.0.")]
Definition
Internals.notP : forall {nP : Prop} {P : Internals.negatedProp false nP}, Internals.move_view (~ Internals.unwrap_Prop (Internals.negated_Prop P)) nP Internals.notP is not universe polymorphic Arguments Internals.notP {nP}%_type_scope {P} Internals.notP is transparent Expands to: Constant mathcomp.classical.contra.Internals.notP Declared in library mathcomp.classical.contra, line 275, characters 11-15
Source code
Fact
Source code
Proof.
Internals.notI : forall {nP : Prop} (P : Internals.properNegatedProp nP), Internals.proper_negated_Prop P = (~ nP) Internals.notI is not universe polymorphic Arguments Internals.notI {nP}%_type_scope P Internals.notI is transparent Expands to: Constant mathcomp.classical.contra.Internals.notI Declared in library mathcomp.classical.contra, line 278, characters 11-15
Source code
Internals.proper_nProp : forall [nP : Prop], Internals.properNegatedProp nP -> Internals.negatedProp false nP Internals.proper_nProp is not universe polymorphic Arguments Internals.proper_nProp [nP]%_type_scope P Internals.proper_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.proper_nProp Declared in library mathcomp.classical.contra, line 281, characters 10-22
Source code
@NegatedProp false nP (wrap1Prop (pnProp nP P)) (proper_nPropP P).
Internals.trivial_nProp : forall P : Prop, Internals.negatedProp true (~ P) Internals.trivial_nProp is not universe polymorphic Arguments Internals.trivial_nProp P%_type_scope Internals.trivial_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.trivial_nProp Declared in library mathcomp.classical.contra, line 287, characters 10-23
Source code
Canonical
Internals.True_nProp : Internals.properNegatedProp False Internals.True_nProp is not universe polymorphic Internals.True_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.True_nProp Declared in library mathcomp.classical.contra, line 291, characters 10-20
Source code
Canonical
Internals.False_nProp : Internals.properNegatedProp True Internals.False_nProp is not universe polymorphic Internals.False_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.False_nProp Declared in library mathcomp.classical.contra, line 292, characters 10-21
Source code
Canonical
Internals.not_nProp : forall P : Prop, Internals.properNegatedProp P Internals.not_nProp is not universe polymorphic Arguments Internals.not_nProp P%_type_scope Internals.not_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.not_nProp Declared in library mathcomp.classical.contra, line 293, characters 10-19
Source code
Fact
Source code
Canonical
Internals.and_nProp : forall (P : Prop) [tQ : bool] [nQ : Prop], Internals.negatedProp tQ nQ -> Internals.properNegatedProp (P -> nQ) Internals.and_nProp is not universe polymorphic Arguments Internals.and_nProp P%_type_scope [tQ]%_bool_scope [nQ]%_type_scope Q Internals.and_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.and_nProp Declared in library mathcomp.classical.contra, line 297, characters 10-19
Source code
ProperNegatedProp (@and_nPropP P tQ nQ Q).
Fact
Source code
Canonical
Internals.and3_nProp : forall (P Q : Prop) [tR : bool] [nR : Prop], Internals.negatedProp tR nR -> Internals.properNegatedProp (P -> Q -> nR) Internals.and3_nProp is not universe polymorphic Arguments Internals.and3_nProp (P Q)%_type_scope [tR]%_bool_scope [nR]%_type_scope R Internals.and3_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.and3_nProp Declared in library mathcomp.classical.contra, line 302, characters 10-20
Source code
ProperNegatedProp (@and3_nPropP P Q tR nR R).
Fact
Source code
(~ [/\ P, Q, R & nProp tS nS S]) = (P -> Q -> R -> nS).
Canonical
Internals.and4_nProp : forall (P Q R : Prop) [tS : bool] [nS : Prop], Internals.negatedProp tS nS -> Internals.properNegatedProp (P -> Q -> R -> nS) Internals.and4_nProp is not universe polymorphic Arguments Internals.and4_nProp (P Q R)%_type_scope [tS]%_bool_scope [nS]%_type_scope S Internals.and4_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.and4_nProp Declared in library mathcomp.classical.contra, line 308, characters 10-20
Source code
ProperNegatedProp (@and4_nPropP P Q R tS nS S).
Fact
Source code
(~ [/\ P, Q, R, S & nProp tT nT T]) = (P -> Q -> R -> S -> nT).
Canonical
Internals.and5_nProp : forall (P Q R S : Prop) [tT : bool] [nT : Prop], Internals.negatedProp tT nT -> Internals.properNegatedProp (P -> Q -> R -> S -> nT) Internals.and5_nProp is not universe polymorphic Arguments Internals.and5_nProp (P Q R S)%_type_scope [tT]%_bool_scope [nT]%_type_scope T Internals.and5_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.and5_nProp Declared in library mathcomp.classical.contra, line 314, characters 10-20
Source code
ProperNegatedProp (@and5_nPropP P Q R S tT nT T).
Fact
Source code
(~ (nProp tP nP P \/ nProp tQ nQ Q)) = (nP /\ nQ).
Canonical
Internals.or_nProp : forall [tP : bool] [nP : Prop], Internals.negatedProp tP nP -> forall [tQ : bool] [nQ : Prop], Internals.negatedProp tQ nQ -> Internals.properNegatedProp (nP /\ nQ) Internals.or_nProp is not universe polymorphic Arguments Internals.or_nProp [tP]%_bool_scope [nP]%_type_scope P [tQ]%_bool_scope [nQ]%_type_scope Q Internals.or_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.or_nProp Declared in library mathcomp.classical.contra, line 320, characters 10-18
Source code
ProperNegatedProp (@or_nPropP tP nP P tQ nQ Q).
Fact
Source code
(~ [\/ nProp tP nP P, nProp tQ nQ Q | nProp tR nR R]) = [/\ nP, nQ & nR].
Canonical
Internals.or3_nProp : forall [tP : bool] [nP : Prop], Internals.negatedProp tP nP -> forall [tQ : bool] [nQ : Prop], Internals.negatedProp tQ nQ -> forall [tR : bool] [nR : Prop], Internals.negatedProp tR nR -> Internals.properNegatedProp [/\ nP, nQ & nR] Internals.or3_nProp is not universe polymorphic Arguments Internals.or3_nProp [tP]%_bool_scope [nP]%_type_scope P [tQ]%_bool_scope [nQ]%_type_scope Q [tR]%_bool_scope [nR]%_type_scope R Internals.or3_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.or3_nProp Declared in library mathcomp.classical.contra, line 326, characters 10-19
Source code
ProperNegatedProp (@or3_nPropP tP nP P tQ nQ Q tR nR R).
Fact
Source code
(~ [\/ nProp tP nP P, nProp tQ nQ Q, nProp tR nR R | nProp tS nS S])
= [/\ nP, nQ, nR & nS].
Canonical
Internals.or4_nProp : forall [tP : bool] [nP : Prop], Internals.negatedProp tP nP -> forall [tQ : bool] [nQ : Prop], Internals.negatedProp tQ nQ -> forall [tR : bool] [nR : Prop], Internals.negatedProp tR nR -> forall [tS : bool] [nS : Prop], Internals.negatedProp tS nS -> Internals.properNegatedProp [/\ nP, nQ, nR & nS] Internals.or4_nProp is not universe polymorphic Arguments Internals.or4_nProp [tP]%_bool_scope [nP]%_type_scope P [tQ]%_bool_scope [nQ]%_type_scope Q [tR]%_bool_scope [nR]%_type_scope R [tS]%_bool_scope [nS]%_type_scope S Internals.or4_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.or4_nProp Declared in library mathcomp.classical.contra, line 333, characters 10-19
Source code
ProperNegatedProp (@or4_nPropP tP nP P tQ nQ Q tR nR R tS nS S).
Notation
Source code
Structure
Source code
Source code
AndRHS {
Source code
Canonical
Internals.unary_and_rhs : forall P : Prop, Internals.andRHS false P P P Internals.unary_and_rhs is not universe polymorphic Arguments Internals.unary_and_rhs P%_type_scope Internals.unary_and_rhs is transparent Expands to: Constant mathcomp.classical.contra.Internals.unary_and_rhs Declared in library mathcomp.classical.contra, line 347, characters 10-23
Source code
Canonical
Internals.binary_and_rhs : forall P Q : Prop, Internals.andRHS true P Q (P /\ Q) Internals.binary_and_rhs is not universe polymorphic Arguments Internals.binary_and_rhs (P Q)%_type_scope Internals.binary_and_rhs is transparent Expands to: Constant mathcomp.classical.contra.Internals.binary_and_rhs Declared in library mathcomp.classical.contra, line 348, characters 10-24
Source code
Fact
Source code
Source code
(~ (P -> nProp tR nR R)) = PnQ.
Canonical
Internals.imply_nProp : forall [b : bool] [P nQ PnQ : Prop] [tR : bool] [nR : Internals.andRHS b P nQ PnQ], Internals.negatedProp tR (Internals.and_RHS nR) -> Internals.properNegatedProp PnQ Internals.imply_nProp is not universe polymorphic Arguments Internals.imply_nProp [b]%_bool_scope [P nQ PnQ]%_type_scope [tR]%_bool_scope [nR] R Internals.imply_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.imply_nProp Declared in library mathcomp.classical.contra, line 353, characters 10-21
Source code
Source code
ProperNegatedProp (@imply_nPropP b P nQ PnQ tR nR R).
Fact
Source code
(~ exists : A, nPred tP nP P x) = (forall : A, nP x).
Proof.
Internals.exists_nProp : forall [A : Type] [tP : bool] [nP : A -> Prop], (forall x : A, Internals.negatedProp tP (nP x)) -> Internals.properNegatedProp (forall x : A, nP x) Internals.exists_nProp is not universe polymorphic Arguments Internals.exists_nProp [A]%_type_scope [tP]%_bool_scope [nP]%_function_scope P%_function_scope Internals.exists_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.exists_nProp Declared in library mathcomp.classical.contra, line 362, characters 10-22
Source code
ProperNegatedProp (@exists_nPropP A tP nP P).
Fact
Source code
(~ exists2 : A, P x & nPred tQ nQ Q x) = (forall : A, P x -> nQ x).
Canonical
Internals.exists2_nProp : forall [A : Type] (P : A -> Prop) [tQ : bool] [nQ : A -> Prop], (forall x : A, Internals.negatedProp tQ (nQ x)) -> Internals.properNegatedProp (forall x : A, P x -> nQ x) Internals.exists2_nProp is not universe polymorphic Arguments Internals.exists2_nProp [A]%_type_scope P%_function_scope [tQ]%_bool_scope [nQ]%_function_scope Q%_function_scope Internals.exists2_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.exists2_nProp Declared in library mathcomp.classical.contra, line 368, characters 10-23
Source code
ProperNegatedProp (@exists2_nPropP A P tQ nQ Q).
Fact
Source code
Proof.
Internals.inhabited_nProp : forall T : Type, Internals.properNegatedProp (T -> False) Internals.inhabited_nProp is not universe polymorphic Arguments Internals.inhabited_nProp T%_type_scope Internals.inhabited_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.inhabited_nProp Declared in library mathcomp.classical.contra, line 373, characters 10-25
Source code
Structure
Source code
Source code
Source code
Structure
Source code
Source code
Notation
Source code
Fact
Source code
(~ forall : A, R x) = if b then exists2 , P x & nQ x else exists , nQ x.
Proof.
Internals.forall_nProp : forall [A : Type] [b : bool] [P nQ : A -> Prop] [tR : bool] [nR : A -> Prop], (forall x : A, Internals.nBody b P nQ tR nR x) -> Internals.negatedProp false (if b then exists2 x : A, P x & nQ x else exists x : A, nQ x) Internals.forall_nProp is not universe polymorphic Arguments Internals.forall_nProp [A]%_type_scope [b]%_bool_scope [P nQ]%_function_scope [tR]%_bool_scope [nR]%_function_scope R%_function_scope Internals.forall_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.forall_nProp Declared in library mathcomp.classical.contra, line 409, characters 10-22
Source code
@NegatedProp false _ (wrap2Prop (forall : A, R x)) (forall_nPropP R).
Fact
Source code
properNegatedForallBody b P nQ nR -> and_def b P nQ nR.
Proof.
Internals.proper_nBody : forall [b : bool] [P nQ nR : Prop], Internals.properNegatedForallBody b P nQ nR -> Internals.negatedForallBody b P nQ false nR Internals.proper_nBody is not universe polymorphic Arguments Internals.proper_nBody [b]%_bool_scope [P nQ nR]%_type_scope R Internals.proper_nBody is transparent Expands to: Constant mathcomp.classical.contra.Internals.proper_nBody Declared in library mathcomp.classical.contra, line 415, characters 10-22
Source code
let
Source code
@NegatedForallBody b P nQ false nR (proper_nProp R) def_nR.
Canonical
Internals.nonproper_nBody : forall [tP : bool] [nP : Prop], Internals.negatedProp tP nP -> Internals.negatedForallBody false True nP tP nP Internals.nonproper_nBody is not universe polymorphic Arguments Internals.nonproper_nBody [tP]%_bool_scope [nP]%_type_scope P Internals.nonproper_nBody is transparent Expands to: Constant mathcomp.classical.contra.Internals.nonproper_nBody Declared in library mathcomp.classical.contra, line 418, characters 10-25
Source code
@NegatedForallBody false True nP tP nP P erefl.
Fact
Source code
Proof.
Internals.bounded_nBody : forall [b : bool] [P nQ PnQ : Prop] [tR : bool] [nR : Internals.andRHS b P nQ PnQ], Internals.negatedProp tR (Internals.and_RHS nR) -> Internals.properNegatedForallBody b P nQ PnQ Internals.bounded_nBody is not universe polymorphic Arguments Internals.bounded_nBody [b]%_bool_scope [P nQ PnQ]%_type_scope [tR]%_bool_scope [nR] R Internals.bounded_nBody is transparent Expands to: Constant mathcomp.classical.contra.Internals.bounded_nBody Declared in library mathcomp.classical.contra, line 423, characters 10-23
Source code
Source code
ProperNegatedForallBody (@imply_nProp b P nQ PnQ tR nR R) (andRHS_def nR).
Canonical
Internals.unbounded_nBody : forall [nQ : Prop], Internals.properNegatedProp nQ -> Internals.properNegatedForallBody false True nQ nQ Internals.unbounded_nBody is not universe polymorphic Arguments Internals.unbounded_nBody [nQ]%_type_scope Q Internals.unbounded_nBody is transparent Expands to: Constant mathcomp.classical.contra.Internals.unbounded_nBody Declared in library mathcomp.classical.contra, line 425, characters 10-25
Source code
@ProperNegatedForallBody false True nQ nQ Q erefl.
Structure
Source code
NegatedBool {
Source code
Structure
Source code
PositedBool {
Source code
Local Fact
Source code
Proof.
Internals.is_true_nProp : forall [nP : Prop], Internals.negatedBool nP -> Internals.properNegatedProp nP Internals.is_true_nProp is not universe polymorphic Arguments Internals.is_true_nProp [nP]%_type_scope b Internals.is_true_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.is_true_nProp Declared in library mathcomp.classical.contra, line 448, characters 10-23
Source code
Local Fact
Source code
Proof.
Source code
Proof.
Source code
Proof.
Source code
Proof.
Internals.true_neg : Internals.negatedBool False Internals.true_neg is not universe polymorphic Internals.true_neg is transparent Expands to: Constant mathcomp.classical.contra.Internals.true_neg Declared in library mathcomp.classical.contra, line 454, characters 10-18
Source code
Canonical
Internals.true_pos : Internals.positedBool True Internals.true_pos is not universe polymorphic Internals.true_pos is transparent Expands to: Constant mathcomp.classical.contra.Internals.true_pos Declared in library mathcomp.classical.contra, line 455, characters 10-18
Source code
Canonical
Internals.false_neg : Internals.negatedBool True Internals.false_neg is not universe polymorphic Internals.false_neg is transparent Expands to: Constant mathcomp.classical.contra.Internals.false_neg Declared in library mathcomp.classical.contra, line 456, characters 10-19
Source code
Canonical
Internals.false_pos : Internals.positedBool False Internals.false_pos is not universe polymorphic Internals.false_pos is transparent Expands to: Constant mathcomp.classical.contra.Internals.false_pos Declared in library mathcomp.classical.contra, line 457, characters 10-19
Source code
Local Fact
Source code
Proof.
Internals.id_neg : forall b : bool, Internals.negatedBool (~~ b) Internals.id_neg is not universe polymorphic Arguments Internals.id_neg b%_bool_scope Internals.id_neg is transparent Expands to: Constant mathcomp.classical.contra.Internals.id_neg Declared in library mathcomp.classical.contra, line 460, characters 10-16
Source code
Canonical
Internals.id_pos : forall b : bool, Internals.positedBool b Internals.id_pos is not universe polymorphic Arguments Internals.id_pos b%_bool_scope Internals.id_pos is transparent Expands to: Constant mathcomp.classical.contra.Internals.id_pos Declared in library mathcomp.classical.contra, line 461, characters 10-16
Source code
Local Fact
Source code
Proof.
Internals.negb_neg : forall [P : Prop], Internals.positedBool P -> Internals.negatedBool P Internals.negb_neg is not universe polymorphic Arguments Internals.negb_neg [P]%_type_scope b Internals.negb_neg is transparent Expands to: Constant mathcomp.classical.contra.Internals.negb_neg Declared in library mathcomp.classical.contra, line 465, characters 10-18
Source code
Local Fact
Source code
Proof.
Internals.negb_pos : forall [nP : Prop], Internals.negatedBool nP -> Internals.positedBool nP Internals.negb_pos is not universe polymorphic Arguments Internals.negb_pos [nP]%_type_scope b Internals.negb_pos is transparent Expands to: Constant mathcomp.classical.contra.Internals.negb_pos Declared in library mathcomp.classical.contra, line 468, characters 10-18
Source code
Structure
Source code
Source code
NegatedLeqLHS {
Source code
Canonical
Internals.neg_ltn_LHS : forall n m : nat, Internals.negatedLeqLHS n (n <= m) Internals.neg_ltn_LHS is not universe polymorphic Arguments Internals.neg_ltn_LHS (n m)%_nat_scope Internals.neg_ltn_LHS is transparent Expands to: Constant mathcomp.classical.contra.Internals.neg_ltn_LHS Declared in library mathcomp.classical.contra, line 479, characters 10-21
Source code
Canonical
Internals.neg_leq_LHS : forall n m : nat, Internals.negatedLeqLHS n (n < m) Internals.neg_leq_LHS is not universe polymorphic Arguments Internals.neg_leq_LHS (n m)%_nat_scope Internals.neg_leq_LHS is transparent Expands to: Constant mathcomp.classical.contra.Internals.neg_leq_LHS Declared in library mathcomp.classical.contra, line 480, characters 10-21
Source code
Local Fact
Source code
Source code
Canonical
Internals.leq_neg : forall [n : nat] [lt_nm : bool], Internals.negatedLeqLHS n lt_nm -> Internals.negatedBool lt_nm Internals.leq_neg is not universe polymorphic Arguments Internals.leq_neg [n]%_nat_scope [lt_nm]%_bool_scope m Internals.leq_neg is transparent Expands to: Constant mathcomp.classical.contra.Internals.leq_neg Declared in library mathcomp.classical.contra, line 484, characters 10-17
Source code
Source code
Structure
Source code
NeqRHS {
Source code
Structure
Source code
BoolNeqRHS {
Source code
Local Fact
Source code
Proof.
Internals.eq_nProp : forall [nP : Prop] [T : Type] [x : T], Internals.neqRHS nP x -> Internals.properNegatedProp nP Internals.eq_nProp is not universe polymorphic Arguments Internals.eq_nProp [nP T]%_type_scope [x] y Internals.eq_nProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.eq_nProp Declared in library mathcomp.classical.contra, line 505, characters 10-18
Source code
Local Fact
Source code
Proof.
Internals.bool_neq : forall [nP : Prop] [x : bool], Internals.boolNeqRHS nP x -> Internals.neqRHS nP x Internals.bool_neq is not universe polymorphic Arguments Internals.bool_neq [nP]%_type_scope [x]%_bool_scope y Internals.bool_neq is transparent Expands to: Constant mathcomp.classical.contra.Internals.bool_neq Declared in library mathcomp.classical.contra, line 509, characters 10-18
Source code
Canonical
Internals.true_neq : forall [nP : Prop] (b : Internals.negatedBool nP), Internals.boolNeqRHS nP (Internals.negated_bool b) Internals.true_neq is not universe polymorphic Arguments Internals.true_neq [nP]%_type_scope b Internals.true_neq is transparent Expands to: Constant mathcomp.classical.contra.Internals.true_neq Declared in library mathcomp.classical.contra, line 510, characters 10-18
Source code
Local Fact
Source code
Proof.
Internals.false_neq : forall [P : Prop] (b : Internals.positedBool P), Internals.boolNeqRHS P (Internals.posited_bool b) Internals.false_neq is not universe polymorphic Arguments Internals.false_neq [P]%_type_scope b Internals.false_neq is transparent Expands to: Constant mathcomp.classical.contra.Internals.false_neq Declared in library mathcomp.classical.contra, line 513, characters 10-19
Source code
Local Fact
Source code
Proof.
Internals.eqType_neq : forall [T : eqType] (x y : T), Internals.neqRHS (x != y) x Internals.eqType_neq is not universe polymorphic Arguments Internals.eqType_neq [T] x y Internals.eqType_neq is transparent Expands to: Constant mathcomp.classical.contra.Internals.eqType_neq Declared in library mathcomp.classical.contra, line 517, characters 10-20
Source code
@NeqRHS (x != y) T x (Wrap y) (eqType_neqP x y).
Local Fact
Source code
Proof.
Internals.eq_op_pos : forall [T : eqType] (x y : T), Internals.positedBool (x = y) Internals.eq_op_pos is not universe polymorphic Arguments Internals.eq_op_pos [T] x y Internals.eq_op_pos is transparent Expands to: Constant mathcomp.classical.contra.Internals.eq_op_pos Declared in library mathcomp.classical.contra, line 521, characters 10-19
Source code
Structure
Source code
Source code
Structure
Source code
Source code
Local Notation
Source code
Local Notation
Source code
Lemma
Source code
Proof.
Lemma
Source code
Proof.
Source code
Local Fact
Source code
Proof.
Internals.Prop_wType : forall P : Prop, Internals.witnessedType P Internals.Prop_wType is not universe polymorphic Arguments Internals.Prop_wType P%_type_scope Internals.Prop_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.Prop_wType Declared in library mathcomp.classical.contra, line 568, characters 10-20
Source code
@WitnessedType P (wrap1Type P) (eq_inhabited (@id P) id).
Source code
Proof.
Internals.proper_wType : forall [P : Prop], Internals.properWitnessedType P -> Internals.witnessedType P Internals.proper_wType is not universe polymorphic Arguments Internals.proper_wType [P]%_type_scope T Internals.proper_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.proper_wType Declared in library mathcomp.classical.contra, line 575, characters 10-22
Source code
@WitnessedType P (wrap2Type _) (@proper_wTypeP P T).
Source code
inhabited (forall : A, wTycon P T x) = (forall : A, P x) .
Proof.
Internals.forall_wType : forall [A : Type] [P : A -> Prop], (forall x : A, Internals.witnessedType (P x)) -> Internals.witnessedType (forall x : A, P x) Internals.forall_wType is not universe polymorphic Arguments Internals.forall_wType [A]%_type_scope [P]%_function_scope T%_function_scope Internals.forall_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.forall_wType Declared in library mathcomp.classical.contra, line 582, characters 10-22
Source code
@WitnessedType _ (wrap3Type _) (@forall_wTypeP A P T).
Internals.inhabited_wType : forall T : Type, Internals.witnessedType (inhabited T) Internals.inhabited_wType is not universe polymorphic Arguments Internals.inhabited_wType T%_type_scope Internals.inhabited_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.inhabited_wType Declared in library mathcomp.classical.contra, line 586, characters 10-25
Source code
Local Fact
Source code
Proof.
Internals.void_wType : Internals.properWitnessedType False Internals.void_wType is not universe polymorphic Internals.void_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.void_wType Declared in library mathcomp.classical.contra, line 591, characters 10-20
Source code
Local Fact
Source code
Proof.
Internals.unit_wType : Internals.properWitnessedType True Internals.unit_wType is not universe polymorphic Internals.unit_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.unit_wType Declared in library mathcomp.classical.contra, line 594, characters 10-20
Source code
Local Fact
Source code
Canonical
Internals.pair_wType : forall [P Q : Prop], Internals.witnessedType P -> Internals.witnessedType Q -> Internals.properWitnessedType (P /\ Q) Internals.pair_wType is not universe polymorphic Arguments Internals.pair_wType [P Q]%_type_scope S T Internals.pair_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.pair_wType Declared in library mathcomp.classical.contra, line 598, characters 10-20
Source code
Local Fact
Source code
Canonical
Internals.sum_wType : forall [P Q : Prop], Internals.witnessedType P -> Internals.witnessedType Q -> Internals.properWitnessedType (P \/ Q) Internals.sum_wType is not universe polymorphic Arguments Internals.sum_wType [P Q]%_type_scope S T Internals.sum_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.sum_wType Declared in library mathcomp.classical.contra, line 602, characters 10-19
Source code
Local Fact
Source code
Proof.
Internals.sumbool_wType : forall P Q : Prop, Internals.properWitnessedType (P \/ Q) Internals.sumbool_wType is not universe polymorphic Arguments Internals.sumbool_wType (P Q)%_type_scope Internals.sumbool_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.sumbool_wType Declared in library mathcomp.classical.contra, line 606, characters 10-23
Source code
Local Fact
Source code
Canonical
Internals.sumor_wType : forall [P : Prop] (Q : Prop), Internals.witnessedType P -> Internals.properWitnessedType (P \/ Q) Internals.sumor_wType is not universe polymorphic Arguments Internals.sumor_wType [P]%_type_scope Q%_type_scope T Internals.sumor_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.sumor_wType Declared in library mathcomp.classical.contra, line 610, characters 10-21
Source code
Local Fact
Source code
Proof.
Internals.sig1_wType : forall [T : Type] (P : T -> Prop), Internals.properWitnessedType (exists x : T, P x) Internals.sig1_wType is not universe polymorphic Arguments Internals.sig1_wType [T]%_type_scope P%_function_scope Internals.sig1_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.sig1_wType Declared in library mathcomp.classical.contra, line 614, characters 10-20
Source code
Local Fact
Source code
inhabited { : T | P x & Q x} = exists2 : T, P x & Q x.
Proof.
Internals.sig2_wType : forall [T : Type] (P Q : T -> Prop), Internals.properWitnessedType (exists2 x : T, P x & Q x) Internals.sig2_wType is not universe polymorphic Arguments Internals.sig2_wType [T]%_type_scope (P Q)%_function_scope Internals.sig2_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.sig2_wType Declared in library mathcomp.classical.contra, line 619, characters 10-20
Source code
Local Fact
Source code
inhabited { : A & wTycon P T x} = (exists : A, P x).
Canonical
Internals.sigT_wType : forall [A : Type] [P : A -> Prop], (forall x : A, Internals.witnessedType (P x)) -> Internals.properWitnessedType (exists x : A, P x) Internals.sigT_wType is not universe polymorphic Arguments Internals.sigT_wType [A]%_type_scope [P]%_function_scope T%_function_scope Internals.sigT_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.sigT_wType Declared in library mathcomp.classical.contra, line 624, characters 10-20
Source code
Local Fact
Source code
inhabited { : A & wTycon P S x & wTycon Q T x} = (exists2 : A, P x & Q x).
Canonical
Internals.sigT2_wType : forall [A : Type] [P Q : A -> Prop], (forall x : A, Internals.witnessedType (P x)) -> (forall x : A, Internals.witnessedType (Q x)) -> Internals.properWitnessedType (exists2 x : A, P x & Q x) Internals.sigT2_wType is not universe polymorphic Arguments Internals.sigT2_wType [A]%_type_scope [P Q]%_function_scope (S T)%_function_scope Internals.sigT2_wType is transparent Expands to: Constant mathcomp.classical.contra.Internals.sigT2_wType Declared in library mathcomp.classical.contra, line 629, characters 10-21
Source code
ProperWitnessedType (@sigT2_wTypeP A P Q S T).
Structure
Source code
Source code
WitnessProp {
Source code
Structure
Source code
ProperWitnessProp {
Source code
Local Notation
Source code
Local Notation
Source code
Local Fact
Source code
Proof.
Source code
Proof.
Internals.witness : forall {T : Type} {P0 : Prop} {P : Internals.witnessProp false P0 T}, Internals.move_view (Internals.unwrap_Prop (Internals.witness_Prop P)) T Internals.witness is not universe polymorphic Arguments Internals.witness {T P0}%_type_scope {P} Internals.witness is transparent Expands to: Constant mathcomp.classical.contra.Internals.witness Declared in library mathcomp.classical.contra, line 691, characters 11-18
Source code
Source code
Proof.
Internals.proper_wProp : forall [T : Type], Internals.properWitnessProp T -> Internals.witnessProp false True T Internals.proper_wProp is not universe polymorphic Arguments Internals.proper_wProp [T]%_type_scope P Internals.proper_wProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.proper_wProp Declared in library mathcomp.classical.contra, line 697, characters 10-22
Source code
Source code
wrap2Prop (forall : A, wPred false T P0 P x) -> (forall , T x) * True.
Proof.
Internals.forall_wProp : forall [A : Type] [T : A -> Type] [P0 : A -> Prop], (forall x : A, Internals.witnessProp false (P0 x) (T x)) -> Internals.witnessProp false True (forall x : A, T x) Internals.forall_wProp is not universe polymorphic Arguments Internals.forall_wProp [A]%_type_scope [T P0]%_function_scope P%_function_scope Internals.forall_wProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.forall_wProp Declared in library mathcomp.classical.contra, line 704, characters 10-22
Source code
Internals.trivial_wProp : forall P : Prop, Internals.witnessProp true P P Internals.trivial_wProp is not universe polymorphic Arguments Internals.trivial_wProp P%_type_scope Internals.trivial_wProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.trivial_wProp Declared in library mathcomp.classical.contra, line 707, characters 10-23
Source code
WitnessProp true (fun : wrap3Prop P => (p, p) : P * P).
Canonical
Internals.inhabited_wProp : forall T : Type, Internals.properWitnessProp T Internals.inhabited_wProp is not universe polymorphic Arguments Internals.inhabited_wProp T%_type_scope Internals.inhabited_wProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.inhabited_wProp Declared in library mathcomp.classical.contra, line 712, characters 10-25
Source code
Structure
Source code
Source code
Canonical
Internals.nand_false_bool : forall b : bool, Internals.nandBool b Internals.nand_false_bool is not universe polymorphic Arguments Internals.nand_false_bool b%_bool_scope Internals.nand_false_bool is transparent Expands to: Constant mathcomp.classical.contra.Internals.nand_false_bool Declared in library mathcomp.classical.contra, line 724, characters 10-25
Source code
Canonical
Internals.nand_true_bool : Internals.nandBool false Internals.nand_true_bool is not universe polymorphic Internals.nand_true_bool is transparent Expands to: Constant mathcomp.classical.contra.Internals.nand_true_bool Declared in library mathcomp.classical.contra, line 725, characters 10-24
Source code
Local Fact
Source code
wProp s S P0 P /\ wProp t T Q0 Q -> S * T.
Proof.
Internals.and_wProp : forall [s : bool] [S : Type] [P0 : Prop], Internals.witnessProp s P0 S -> forall [t : Internals.nandBool s] [T : Type] [Q0 : Prop], Internals.witnessProp (Internals.nand_bool t) Q0 T -> Internals.properWitnessProp (S * T) Internals.and_wProp is not universe polymorphic Arguments Internals.and_wProp [s]%_bool_scope [S P0]%_type_scope P [t] [T Q0]%_type_scope Q Internals.and_wProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.and_wProp Declared in library mathcomp.classical.contra, line 730, characters 10-19
Source code
ProperWitnessProp (@and_wPropP s S P0 P t T Q0 Q).
Local Fact
Source code
wProp s S P0 P \/ wProp t T Q0 Q ->
if t then if s then {P0} + {Q0} : Type else S + {Q0} else S + T : Type.
Canonical
Internals.or_wProp : forall [s : bool] [S : Type] [P0 : Prop], Internals.witnessProp s P0 S -> forall [t : bool] [T : Type] [Q0 : Prop], Internals.witnessProp t Q0 T -> Internals.properWitnessProp (if t then if s then {P0} + {Q0} : Type else S + {Q0} else S + T : Type) Internals.or_wProp is not universe polymorphic Arguments Internals.or_wProp [s]%_bool_scope [S P0]%_type_scope P [t]%_bool_scope [T Q0]%_type_scope Q Internals.or_wProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.or_wProp Declared in library mathcomp.classical.contra, line 742, characters 10-18
Source code
ProperWitnessProp (@or_wPropP s S P0 P t T Q0 Q).
Local Fact
Source code
(exists : A, wPred t T P0 P x) -> if t then { | P0 x} else { & T x}.
Canonical
Internals.exists_wProp : forall [A : Type] [t : bool] [T : A -> Type] [P0 : A -> Prop], (forall x : A, Internals.witnessProp t (P0 x) (T x)) -> Internals.properWitnessProp (if t then {x : A | P0 x} else {x : A & T x}) Internals.exists_wProp is not universe polymorphic Arguments Internals.exists_wProp [A]%_type_scope [t]%_bool_scope [T P0]%_function_scope P%_function_scope Internals.exists_wProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.exists_wProp Declared in library mathcomp.classical.contra, line 748, characters 10-22
Source code
ProperWitnessProp (@exists_wPropP A t T P0 P).
Local Fact
Source code
(exists2 : A, wPred s S P0 P x & wPred t T Q0 Q x) ->
if st then { | P0 x & Q0 x} else { : A & S x & T x}.
Canonical
Internals.exists2_wProp : forall [A : Type] [s : bool] [S : A -> Type] [P0 : A -> Prop], (forall x : A, Internals.witnessProp s (P0 x) (S x)) -> forall [t : bool] [T : A -> Type] [Q0 : A -> Prop], (forall x : A, Internals.witnessProp t (Q0 x) (T x)) -> Internals.properWitnessProp (if if s then t else false then {x : A | P0 x & Q0 x} else {x : A & S x & T x}) Internals.exists2_wProp is not universe polymorphic Arguments Internals.exists2_wProp [A]%_type_scope [s]%_bool_scope [S P0]%_function_scope P%_function_scope [t]%_bool_scope [T Q0]%_function_scope Q%_function_scope Internals.exists2_wProp is transparent Expands to: Constant mathcomp.classical.contra.Internals.exists2_wProp Declared in library mathcomp.classical.contra, line 757, characters 10-23
Source code
ProperWitnessProp (@exists2_wPropP A s S P0 P t T Q0 Q).
Local Fact
Source code
Proof.
Source code
Proof.
Local Fact
Source code
Proof.
Local Fact
Source code
Local Fact
Source code
(nP -> nQ) -> (~ nProp tP nP P -> ~ nProp tQ nQ Q).
Proof.
End Internals.
Import Internals.
#[warnings="-user-warn"] Definition
notP : forall {nP : Prop} {P : negatedProp false nP}, move_view (~ P) nP notP is not universe polymorphic Arguments notP {nP}%_type_scope {P} notP is transparent Expands to: Constant mathcomp.classical.contra.Internals.notP Declared in library mathcomp.classical.contra, line 275, characters 11-15
Source code
Hint View for move/ move_viewP|2.
Hint View for move/ Internals.equivT_LR|2 Internals.equivT_RL|2.
Hint View for apply/ Internals.equivT_RL|2 Internals.equivT_LR|2.
Export (canonicals) Internals.
Lemma
Source code
Ltac assume_not :=
apply: Internals.push_goal_copy; apply: Internals.assume_not_with
=> /Internals.lax_notP-/Internals.lax_witness.
Source code
Ltac absurd_not := assume_not; apply: Internals.absurdW.
Ltac contrapose :=
apply: Internals.contra_Type;
apply: Internals.contra_notP => /Internals.lax_witness.
Tactic Notation "contra" := contrapose.
Tactic Notation "contra" ":" constr(H) := move: (H); contra.
Tactic Notation "contra" ":" ident(H) := move: H; contra.
Tactic Notation "contra" ":" "{" hyp_list(Hs) "}" constr(H) :=
contra: (H); clear Hs.
Tactic Notation "contra" ":" "{" hyp_list(Hs) "}" ident(H) :=
contra: H; clear Hs.
Tactic Notation "contra" ":" "{" "-" "}" constr(H) := contra: (H).
Lemma
Source code
Proof.
Tactic Notation (at level 0) "absurd" constr(P) := have []: ~ P.
Tactic Notation "absurd" ":" constr(H) := absurd; contra: (H) => _.
Tactic Notation "absurd" ":" ident(H) := absurd; contra: H => _.
Tactic Notation "absurd" ":" "{" hyp_list(Hs) "}" constr(H) :=
absurd: (H) => _; clear Hs.
Tactic Notation "absurd" ":" "{" hyp_list(Hs) "}" ident(H) :=
absurd: H => _; clear Hs.