Library UniMath.CategoryTheory.Hyperdoctrines.Completion.Naturals
- a type `N`
- a term `z : N`
- a term `s : N → N`
Require Import UniMath.MoreFoundations.All.
Require Import UniMath.CategoryTheory.Core.Prelude.
Require Import UniMath.CategoryTheory.DisplayedCats.Core.
Require Import UniMath.CategoryTheory.DisplayedCats.Functors.
Require Import UniMath.CategoryTheory.Hyperdoctrines.Hyperdoctrine.
Require Import UniMath.CategoryTheory.Hyperdoctrines.FirstOrderHyperdoctrine.
Require Import UniMath.CategoryTheory.Hyperdoctrines.Tripos.
Require Import UniMath.CategoryTheory.Hyperdoctrines.HyperdoctrineNat.
Require Import UniMath.CategoryTheory.Hyperdoctrines.Completion.WeakEquivs.
Require Import UniMath.CategoryTheory.Hyperdoctrines.Completion.Construction.
Section Naturals.
Context {H : first_order_preorder_hyperdoctrine}
(N : first_order_preorder_hyperdoctrine_nats H).
Let Hc : first_order_hyperdoctrine
:= first_order_preorder_hyperdoctrine_completion H.
Require Import UniMath.CategoryTheory.Core.Prelude.
Require Import UniMath.CategoryTheory.DisplayedCats.Core.
Require Import UniMath.CategoryTheory.DisplayedCats.Functors.
Require Import UniMath.CategoryTheory.Hyperdoctrines.Hyperdoctrine.
Require Import UniMath.CategoryTheory.Hyperdoctrines.FirstOrderHyperdoctrine.
Require Import UniMath.CategoryTheory.Hyperdoctrines.Tripos.
Require Import UniMath.CategoryTheory.Hyperdoctrines.HyperdoctrineNat.
Require Import UniMath.CategoryTheory.Hyperdoctrines.Completion.WeakEquivs.
Require Import UniMath.CategoryTheory.Hyperdoctrines.Completion.Construction.
Section Naturals.
Context {H : first_order_preorder_hyperdoctrine}
(N : first_order_preorder_hyperdoctrine_nats H).
Let Hc : first_order_hyperdoctrine
:= first_order_preorder_hyperdoctrine_completion H.
Definition first_order_preorder_hyperdoctrine_completion_nats_data
: first_order_hyperdoctrine_nats_data Hc.
Proof.
use make_first_order_hyperdoctrine_nats_data.
- exact N.
- exact (pr121 N).
- exact (pr221 N).
Defined.
: first_order_hyperdoctrine_nats_data Hc.
Proof.
use make_first_order_hyperdoctrine_nats_data.
- exact N.
- exact (pr121 N).
- exact (pr221 N).
Defined.
Proposition first_order_preorder_hyperdoctrine_completion_nats_axioms
: first_order_hyperdoctrine_nats_axioms
first_order_preorder_hyperdoctrine_completion_nats_data.
Proof.
split.
- unfold first_order_hyperdoctrine_nats_zs_axiom.
pose (to_completion_proof H (pr12 N)) as p.
rewrite to_completion_truth in p.
rewrite to_completion_forall in p.
rewrite to_completion_impl in p.
rewrite to_completion_false in p.
rewrite to_completion_equal in p.
exact p.
- unfold first_order_hyperdoctrine_nats_zs_axiom.
pose (to_completion_proof H (pr22 N)) as p.
rewrite to_completion_truth in p.
rewrite !to_completion_forall in p.
rewrite !to_completion_impl in p.
rewrite !to_completion_equal in p.
exact p.
Qed.
: first_order_hyperdoctrine_nats_axioms
first_order_preorder_hyperdoctrine_completion_nats_data.
Proof.
split.
- unfold first_order_hyperdoctrine_nats_zs_axiom.
pose (to_completion_proof H (pr12 N)) as p.
rewrite to_completion_truth in p.
rewrite to_completion_forall in p.
rewrite to_completion_impl in p.
rewrite to_completion_false in p.
rewrite to_completion_equal in p.
exact p.
- unfold first_order_hyperdoctrine_nats_zs_axiom.
pose (to_completion_proof H (pr22 N)) as p.
rewrite to_completion_truth in p.
rewrite !to_completion_forall in p.
rewrite !to_completion_impl in p.
rewrite !to_completion_equal in p.
exact p.
Qed.
Definition first_order_preorder_hyperdoctrine_completion_nats
: first_order_hyperdoctrine_nats Hc.
Proof.
use make_first_order_hyperdoctrine_nats.
- exact first_order_preorder_hyperdoctrine_completion_nats_data.
- exact first_order_preorder_hyperdoctrine_completion_nats_axioms.
Defined.
End Naturals.
: first_order_hyperdoctrine_nats Hc.
Proof.
use make_first_order_hyperdoctrine_nats.
- exact first_order_preorder_hyperdoctrine_completion_nats_data.
- exact first_order_preorder_hyperdoctrine_completion_nats_axioms.
Defined.
End Naturals.