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
canonical_of : forall [T U : Type], (U -> T) -> Type canonical_of is not universe polymorphic Arguments canonical_of [T U]%_type_scope sort%_function_scope canonical_of is transparent Expands to: Constant mathcomp.classical.boolp.canonical_of Declared in library mathcomp.classical.boolp, line 424, characters 11-23
Source code
Hint View for move/ move_viewP|2.
Variant
Source code
Source code
Definition
predp : Type -> Type predp is not universe polymorphic Arguments predp T%_type_scope predp is transparent Expands to: Constant mathcomp.classical.boolp.predp Declared in library mathcomp.classical.boolp, line 622, characters 11-16
Source code
Definition
relp : Type -> Type relp is not universe polymorphic Arguments relp T%_type_scope relp is transparent Expands to: Constant mathcomp.classical.boolp.relp Declared in library mathcomp.classical.boolp, line 626, characters 11-15
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
pred0p : forall {T : Type}, predp T -> bool pred0p is not universe polymorphic Arguments pred0p {T}%_type_scope P pred0p is transparent Expands to: Constant mathcomp.classical.boolp.pred0p Declared in library mathcomp.classical.boolp, line 639, characters 11-17
Source code
equivT_transl^~ (equivT_refl S).
Definition
FunOrder.lef : forall [aT : Type] [d : disp_t] [T : porderType d], (aT -> T) -> (aT -> T) -> bool FunOrder.lef is not universe polymorphic Arguments FunOrder.lef [aT]%_type_scope [d T] (f g)%_function_scope FunOrder.lef is transparent Expands to: Constant mathcomp.classical.boolp.FunOrder.lef Declared in library mathcomp.classical.boolp, line 920, characters 11-14
Source code
equivT_transl \o equivT_sym.
Definition
FunOrder.ltf : forall [aT : Type] [d : disp_t] [T : porderType d], (aT -> T) -> (aT -> T) -> bool FunOrder.ltf is not universe polymorphic Arguments FunOrder.ltf [aT]%_type_scope [d T] (f g)%_function_scope FunOrder.ltf is transparent Expands to: Constant mathcomp.classical.boolp.FunOrder.ltf Declared in library mathcomp.classical.boolp, line 923, characters 11-14
Source code
Source code
equivT_trans^~ eqST.
Definition
FunOrder.meetf : forall [aT : Type] [d : disp_t] [T : latticeType d], (aT -> T) -> (aT -> T) -> aT -> T FunOrder.meetf is not universe polymorphic Arguments FunOrder.meetf [aT]%_type_scope [d T] (f g)%_function_scope x FunOrder.meetf is transparent Expands to: Constant mathcomp.classical.boolp.FunOrder.meetf Declared in library mathcomp.classical.boolp, line 962, characters 11-16
Source code
Proof.
FunOrder.joinf : forall [aT : Type] [d : disp_t] [T : latticeType d], (aT -> T) -> (aT -> T) -> aT -> T FunOrder.joinf is not universe polymorphic Arguments FunOrder.joinf [aT]%_type_scope [d T] (f g)%_function_scope x FunOrder.joinf is transparent Expands to: Constant mathcomp.classical.boolp.FunOrder.joinf Declared in library mathcomp.classical.boolp, line 963, characters 11-16
Source code
let: EquivT S_T _ := eq in S_T.
Definition
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
Source code
Canonical TypeForall.
Canonical
Source code
Canonical
Source code
Definition
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
Source code
Definition
Source code
Definition
Source code
Canonical
big_lexi_order : forall {I : Type}, (I -> Type) -> Type big_lexi_order is not universe polymorphic Arguments big_lexi_order {I}%_type_scope T%_function_scope big_lexi_order is transparent Expands to: Constant mathcomp.classical.classical_orders.big_lexi_order Declared in library mathcomp.classical.classical_orders, line 29, characters 11-25
Source code
Polymorphic Structure
Source code
Source code
Polymorphic Definition
same_prefix : forall {K : nat -> eqType}, NatOrder.Datatypes_nat__canonical__Order_Preorder -> (forall n : nat, K n) -> (forall n : nat, K n) -> Prop same_prefix is not universe polymorphic Arguments same_prefix {K}%_function_scope n (t1 t2)%_function_scope same_prefix is transparent Expands to: Constant mathcomp.classical.classical_orders.same_prefix Declared in library mathcomp.classical.classical_orders, line 36, characters 11-22
Source code
Polymorphic Definition
first_diff : forall {K : nat -> eqType}, (forall n : nat, K n) -> (forall n : nat, K n) -> option nat first_diff is not universe polymorphic Arguments first_diff {K}%_function_scope (t1 t2)%_function_scope first_diff is transparent Expands to: Constant mathcomp.classical.classical_orders.first_diff Declared in library mathcomp.classical.classical_orders, line 60, characters 11-21
Source code
Polymorphic Definition
big_lexi_le : forall {K : nat -> eqType}, (forall n : nat, K n -> K n -> bool) -> (forall n : nat, K n) -> (forall n : nat, K n) -> bool big_lexi_le is not universe polymorphic Arguments big_lexi_le {K}%_function_scope (R t1 t2)%_function_scope big_lexi_le is transparent Expands to: Constant mathcomp.classical.classical_orders.big_lexi_le Declared in library mathcomp.classical.classical_orders, line 131, characters 11-22
Source code
Polymorphic Definition
start_with : forall {K : nat -> eqType}, NatOrder.Datatypes_nat__canonical__Order_Preorder -> (forall n : nat, K n) -> (forall n : nat, K n) -> forall i : nat, K i start_with is not universe polymorphic Arguments start_with {K}%_function_scope n (t1 t2)%_function_scope i%_nat_scope start_with is transparent Expands to: Constant mathcomp.classical.classical_orders.start_with Declared in library mathcomp.classical.classical_orders, line 184, characters 11-21
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.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
#[warn(note="A different `notE` used to be provided by `boolp.v` before MathComp-Analysis 1.15.0.")]
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
#[warn(note="A different `notP` used to be provided by `boolp.v` before MathComp-Analysis 1.15.0.")]
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
Fact
Source code
Proof.
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
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
@NegatedProp false nP (wrap1Prop (pnProp nP P)) (proper_nPropP P).
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
Canonical
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
Canonical
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
Canonical
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
Fact
Source code
Canonical
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
ProperNegatedProp (@and_nPropP P tQ nQ Q).
Fact
Source code
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
ProperNegatedProp (@and3_nPropP P Q tR nR R).
Fact
Source code
(~ [/\ P, Q, R & nProp tS nS S]) = (P -> Q -> R -> nS).
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
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.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
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.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
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.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
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.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
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.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
Canonical
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
Fact
Source code
Source code
(~ (P -> nProp tR nR R)) = PnQ.
Canonical
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
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.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
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.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
ProperNegatedProp (@exists2_nPropP A P tQ nQ Q).
Fact
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
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.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
@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.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
let
Source code
@NegatedForallBody b P nQ false nR (proper_nProp R) def_nR.
Canonical
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
@NegatedForallBody false True nP tP nP P erefl.
Fact
Source code
Proof.
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
Source code
ProperNegatedForallBody (@imply_nProp b P nQ PnQ tR nR R) (andRHS_def nR).
Canonical
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
@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.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
Local Fact
Source code
Proof.
Source code
Proof.
Source code
Proof.
Source code
Proof.
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
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
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
Local Fact
Source code
Proof.
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
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
Local Fact
Source code
Proof.
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
Local Fact
Source code
Proof.
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
Structure
Source code
Source code
NegatedLeqLHS {
Source code
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
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
Local Fact
Source code
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
Source code
Structure
Source code
NeqRHS {
Source code
Structure
Source code
BoolNeqRHS {
Source code
Local Fact
Source code
Proof.
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
Local Fact
Source code
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
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
Local 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
Local Fact
Source code
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
@NeqRHS (x != y) T x (Wrap y) (eqType_neqP x y).
Local Fact
Source code
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
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.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
@WitnessedType P (wrap1Type P) (eq_inhabited (@id P) id).
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
@WitnessedType P (wrap2Type _) (@proper_wTypeP P T).
Source code
inhabited (forall : A, wTycon P T x) = (forall : A, P x) .
Proof.
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
@WitnessedType _ (wrap3Type _) (@forall_wTypeP A P T).
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.
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
Local Fact
Source code
Proof.
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
Local Fact
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
Local Fact
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
Local Fact
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
inhabited { : T | P x & Q x} = exists2 : T, P x & Q x.
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
Local Fact
Source code
inhabited { : A & wTycon P T x} = (exists : A, P x).
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
Local Fact
Source code
inhabited { : A & wTycon P S x & wTycon Q T x} = (exists2 : A, P x & Q x).
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
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.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
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
Source code
wrap2Prop (forall : A, wPred false T P0 P x) -> (forall , T x) * True.
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
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
WitnessProp true (fun : wrap3Prop P => (p, p) : P * P).
Canonical
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
Structure
Source code
Source code
Canonical
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
Canonical
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
Local Fact
Source code
wProp s S P0 P /\ wProp t T Q0 Q -> S * T.
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
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.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
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.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
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.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
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
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
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.