(** # #
#+TITLE: cartierSolution10.v

Proph

https://github.com/1337777/cartier/blob/master/cartierSolution10.v

solves half of some question of CARTIER which is how to program « geometric homotopic parametrization modos » ( "dependent type" , "fibred category with local internal products" ) ...

ERRATA :: this also solves cartierSolution9.v where the general-cartesian property of the fibred-category was "confused" .

SHORT ::

  (1.) The ends is « MODOS » : to program the « form-morphisms » parametrized-over the spans of « parameter-morphisms » ( "fibration" ) , which are generated by some « generating parametrization-functor » and some geometric finitely-presented/compact dataobjects , such that this programming enables the computational-logical introductions-eliminations for the product/pi-object and the computational-logical constructors-destructors for the data/sum/sigma/colimit-objects and the cut/pullback-elimination/admissibility lemmas ; and to do this geometric programming coherently/continuously for the viewing-data/topology sense-decodings (MEMO: search-replace all the quantifiers into quantifiers over some covering ...) . What is cut-elimination ? Cut-elimination enables to cut through the topos while doing computations on the data and to accumulate the cuts/compositions/pullbacks into polymorphic (projection-style) constructors .

  (2.) CONTRAST : The internal-representability of the "context-extension"-object is expressed as any form-morphism (generalized-element of any shape , not only terminal/section) parameterized-over any span of parameter-morphisms (not only one object/slice) !1! Memo that in the « Interface Engineering » ( a.k.a  the "type theory" or even the "Type Theory" a-la Thorsten) of "comprehension-categry / category-with-family / natural-model" , the internal-representability of the "context-extension"-object metatheoretically-relates type-theory-style (terms are section morphisms of the terminal shape) as-corresponding-to locally-catesian-closed-style (arrows are in the slice over one object) : this is OK for electrical circuits , but NOT OK for mathematics ...

  (3.) Any anticipated induction-induction interdependence between morphisms and objects is avoided via the use of « pseudocodes sharing » instead : the objects codes and morphisms codes inductive-families communicate through the sharing of « morphisms pseudocodes » indexes which are intermediate between sense and codes . Moreover the general-cartesian property (more-general than pullback) of the fibred-category , which is really some necessity/symptom of polymorphism , is expressed using these « morphisms pseudocodes » .

  (4.) TODO: use better interface engineering (a-la jgross , instead of nested sigma-types everywhere) for effective-performance and clear-correctness . TODO: implement the interface of the geometric finitely-presented/compact dataobjects . TODO: implement the interface of the composition-monoidal associativity-coherence (MEMO: the general-cartesian property requires some explicit associativity ...) of the parameter-congruences (reuse coherence2.v) . TODO: Besides these unavoidable extensional congruences and their associativity-coherence , moreover to relax the proof-assistant ( n00bs should know this is not for free and has some cost named "homotopy-coherence" ) ,  some intensional congruences (homotopy) may be grammatically-expressed and supported by some model-category sense ( MEMO: cartierSolution6.v + univalent coCartesian fibrations a-la Cisinski ) ...

  (5.) Another angle of view :

#+BEGIN_EXAMPLE
E ------------------------- f --------------------------> F
|  \                                                      |
.    PI_project SUBST_subst F ------- application ------> .
|      |                                                  |
.      .                                                  .
|      |                                                  |
.      .                                                  .
|      |                                                  |
v      v                                                  v
E_ <-> E' <----- project ------- P ------- subst -------> F_
#+END_EXAMPLE

  (6.) For instant first impression , the internal-representability of the "context-extension"-object , is written as :

#+BEGIN_EXAMPLE
| Formatting : forall (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff ))
 (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF' ))
 (reparam_EF : 'CoMod_$( PParam_EF ~> PParam_EF' @_ Sense1_Param_reparam_EF ))
 (param_ee : 'CoMod__( Param_D ~> Param_E @_ PParam_DE )),
 'CoMod__( Param_D ~> Format F Param_F @_ _ )
#+END_EXAMPLE

KEYWORDS :: COQ ; computational logic ; geometry ; homotopy ; MODOS

OUTLINE SHORT :: https://gitlab.com/1337777/cartier/blob/master/cartierSolution1.v ( comonad and adjunction cut-eliminations in the style of the pairing-projections cancellation for the cartesian-product )

OUTLINE ::

  * Generating parametrization-functor sense
    + Generating parameters
    + Generating parametrized-forms

  * Grammatical presentation of the pseudocodes of the finitely-presented/compact dataobjects and the pseudocodes of the morphisms
    + Sense-decodings lemmas : parameter-object as functor , parameter-morphism as natural transformation , form-object as fibration over parameter-object
    + Sense-decodings lemmas : collection of form-elements above one given parameter-element
    + Sense-decodings lemmas : collection of parameter-elements above one given parameter-element
    + Sense-decodings lemmas : fibre of form-objects above one given parameter-object
    + Sense-decodings lemmas : substitution (pullback) of parameter-morphism along given parameter-morphism
    + Sense-decodings lemmas : image of localization (pullback) of parameter-morphism along given parameter-element
    + Sense-decodings lemmas : total (pullback) parameter-object of one given parameter-morphism
    + Sense-decodings of objects : viewing functor of parameter-object , or image of total (pullback) parameter-object of one given parameter-morphism
    + Sense-decodings of objects : viewing functor ( sum-substitution of form-object ) along pparameter-morphisms (span of two parameter-morphisms)
    + Sense-decodings of objects : product-substitution of form-object along pparameter-morphisms (span of two parameter-morphisms)
    + Sense-decodings lemmas : form-morphism (natural transformation) over some given pparameter-morphisms (span of two parameter-morphisms)
    + Sense-decodings of objects : format ( context-extension ) parameter-object of given form-object over given parameter-object
    + Sense-decodings of morphisms : Compos (composition) form-morphism , Unit (identity) form-morphism
    + Sense-decodings of morphisms : introduction and elimination for the product-substitution object
    + Sense-decodings of morphisms : yoneda-embedding form-morphism of generator-arrow
    + Sense-decodings of morphisms : Constructing_default form-morphism over Constructing_PParam_default pparameter-morphisms
    + Sense-decodings lemmas : polymorphism/naturality of some family of morphisms
    + Sense-decodings of morphisms : Destructing_default form-morphism over Destructing_PParam_default pparameter-morphisms
    + Interface for pseudocodes of the finitely-presented/compact dataobjects , and example for the binary-dataobject
    + Pseudocodes of the morphisms

  * Grammatical presentation of the objects

  * Grammatical presentation of the pseudocodes of the parameter-congruences (reparametrization) and the pseudocodes of the form-congruences (conversion)
    + Sense-decodings of parameter-congruences (reparametrization) : definitions
    + Sense-decodings of parameter-congruences (reparametrization) : reversibility , reflexivity , transitivity
    + Sense-decodings of parameter-congruences (reparametrization) : (Compos_PParam-)composition-monoidal associativity
    + Sense-decodings of parameter-congruences (reparametrization) : etc ...
    + Sense-decodings of form-congruences (conversion) : definitions
    + Sense-decodings of form-congruences (conversion) : reversibility , reflexivity , transitivity
    + Sense-decodings of form-congruences (conversion) : (Compos-)composition-monoidal associativity
    + Sense-decodings of form-congruences (conversion) : etc ...
    + Pseudocodes of the parameter-congruences (reparametrization) with Pseudocodes of the form-congruences (conversion)

  * Grammatical presentation of the morphisms , carrying the pseudocodes for morphisms

  * Grammatical presentation of the parameter-congruences (reparametrization) with the form-congruences (conversion) , with their interfaces for the (Compos-)composition-monoidal associativity-coherences
    + Interface for the (Compos-)composition-monoidal associativity-coherences of the parameter-congruences (reparametrization) with the form-congruences (conversion)
    + Grammatical presentation of the parameter-congruences (reparametrization) with the form-congruences (conversion)

  * Linear total/asymptotic grade and the degradation lemma

  * Solution morphisms
    + Solution morphisms without composition
    + Cases-refinement of morphisms with inner-instantiation of codomain object-indexes

  * Composition/cut-elimination into polymorphic soiution by computational/total/asymptotic/reduction/(multi-step) resolution using conversions

HINT :: do cartierSolution11.v (geometry, reuse cartierSolution8.v) cartierSolution12.v (homotopy, reuse cartierSolution6.v)

-----

user1@computer1:~$ coqc --version
The Coq Proof Assistant, version 8.10+alpha

-----

* Generating parametrization-functor sense

** Generating parameters

#+BEGIN_SRC coq :exports both :results silent # # **)
Require Import ssreflect ssrfun ssrbool.
Require Lia.

Module PPARAMETRIZATION.

Set Implicit Arguments. Unset Strict Implicit. Unset Printing Implicit Defensive.
Set Primitive Projections.

Notation "'sval'" := (@proj1_sig _ _).

Declare Scope poly_scope. Delimit Scope poly_scope with poly. Open Scope poly.

Parameter obParametrizator : Type.
Parameter morParametrizator : obParametrizator -> obParametrizator -> Type.
Parameter polyParametrizator :
  forall A A', morParametrizator A' A -> forall A'', morParametrizator A'' A' -> morParametrizator A'' A .
Parameter unitParametrizator : forall {A : obParametrizator}, morParametrizator A A.
Notation "''Parametrizator' (  A'  ~>  A  )" := (@morParametrizator A' A) (at level 0) : poly_scope.
Notation "_@ A''  o>Parametrizator  a'" := (@polyParametrizator _ _ a' A'')
          (at level 40, A'' , a' at next level, left associativity) : poly_scope.
Notation "a_ o>Parametrizator a'" := (@polyParametrizator _ _ a' _ a_)
                                  (at level 40, a' at next level) : poly_scope.
Axiom polyParametrizator_morphism :
  forall (A A' : obParametrizator) (a' : 'Parametrizator( A' ~> A ))
    (A'' : obParametrizator) (a_ : 'Parametrizator( A'' ~> A' )),
  forall B (b : 'Parametrizator( B ~> A'' )),
      b o>Parametrizator ( a_ o>Parametrizator a' ) = ( b o>Parametrizator a_ ) o>Parametrizator a' .
Axiom polyParametrizator_unitParametrizator :
  forall (A A' : obParametrizator) (a' : 'Parametrizator( A' ~> A )),
    a' = ( (@unitParametrizator A') o>Parametrizator a' ) .
Axiom unitParametrizator_polyParametrizator :
  forall (A : obParametrizator), forall (A'' : obParametrizator) (a_ : 'Parametrizator( A'' ~> A )),
    a_ = ( a_ o>Parametrizator (@unitParametrizator A) ) .
(** # #
#+END_SRC

** Generating parametrized-forms

#+BEGIN_SRC coq :exports both :results silent # # **)
Parameter obGenerator : Type.
Parameter morGenerator : obGenerator -> obGenerator -> Type.
Parameter polyGenerator :
  forall A A', morGenerator A' A -> forall A'', morGenerator A'' A' -> morGenerator A'' A .
Parameter unitGenerator : forall {A : obGenerator}, morGenerator A A.
Notation "''Generator' ( A' ~> A )" := (@morGenerator A' A)
                  (at level 0, format "''Generator' (  A'  ~>  A  )") : poly_scope.
Notation "_@ A''  o>Generator  a'" := (@polyGenerator _ _ a' A'')
          (at level 40, A'' , a' at next level, left associativity) : poly_scope.
Notation "a_ o>Generator a'" := (@polyGenerator _ _ a' _ a_)
                                  (at level 40, a' at next level) : poly_scope.
Axiom polyGenerator_morphism :
  forall (A A' : obGenerator) (a' : 'Generator( A' ~> A ))
    (A'' : obGenerator) (a_ : 'Generator( A'' ~> A' )),
  forall B (b : 'Generator( B ~> A'' )),
      b o>Generator ( a_ o>Generator a' ) = ( b o>Generator a_ ) o>Generator a' .
Axiom polyGenerator_unitGenerator :
  forall (A A' : obGenerator) (a' : 'Generator( A' ~> A )),
    a' = ( (@unitGenerator A') o>Generator a' ) .
Axiom unitGenerator_polyGenerator :
  forall (A : obGenerator), forall (A'' : obGenerator) (a_ : 'Generator( A'' ~> A )),
    a_ = ( a_ o>Generator (@unitGenerator A) ) .

Parameter Parameter0 : obGenerator -> obParametrizator.
Parameter Parameter1 : forall A A' : obGenerator,
    'Generator( A ~> A' ) -> 'Parametrizator( Parameter0 A ~> Parameter0 A') .
Axiom Parameter_morphism :
  forall (A A' : obGenerator) (a' : 'Generator( A' ~> A ))
    (A'' : obGenerator) (a_ : 'Generator( A'' ~> A' )),
    Parameter1 ( a_ o>Generator a' ) = ( Parameter1 a_ ) o>Parametrizator (Parameter1 a').
Axiom Parameter_unitGenerator :
  forall (A : obGenerator),
    (@unitParametrizator (Parameter0 A)) = ( Parameter1 (@unitGenerator A) ) .
(** # #
#+END_SRC

* Grammatical presentation of the pseudocodes of the finitely-presented/compact dataobjects and the pseudocodes of the morphisms

** Sense-decodings lemmas : parameter-object as functor , parameter-morphism as natural transformation , form-object as fibration over parameter-object

#+BEGIN_SRC coq :exports both :results silent # # **)
Definition Sense01_action (Sense00 : obGenerator -> Type)
           (Sense01 : forall G G' : obGenerator,
               'Generator( G' ~> G ) -> Sense00 G -> Sense00 G')
           G G' (g : 'Generator( G' ~> G)) (x : Sense00 G)
  := (Sense01 G G' g x).

Notation "g o>Generator_ [ Sense01 ] x" := (@Sense01_action _ Sense01 _ _ g x)
                         (at level 40, x at next level) : poly_scope.
Notation "g o>Generator_ x" := (@Sense01_action _ _ _ _ g x)
                                 (at level 40, x at next level) : poly_scope.

Definition Sense01_functor (Sense00 : obGenerator -> Type)
           (Sense01 : forall G G' : obGenerator,
               'Generator( G' ~> G ) -> Sense00 G -> Sense00 G') : Prop :=
  ( forall G G' (g : 'Generator( G' ~> G)) G'' (g' : 'Generator( G'' ~> G')) x,
        g' o>Generator_[Sense01] (g o>Generator_[Sense01] x)
        = (g' o>Generator g) o>Generator_[Sense01] x ) /\
  ( forall G x, x = (@unitGenerator G) o>Generator_[Sense01] x ) .

Definition Sense01_data (Sense00 : obGenerator -> Type)
  := { Sense01 : ( forall G G' : obGenerator, 'Generator( G' ~> G ) -> Sense00 G -> Sense00 G' ) |
                              Sense01_functor Sense01 }.

Definition Sense1_natural
           Sense00_F (Sense01_F : Sense01_data Sense00_F)
           Sense00_E (Sense01_E : Sense01_data Sense00_E)
           (Sense1 : forall G : obGenerator, Sense00_F G -> Sense00_E G) : Prop :=
  forall G G' (g : 'Generator( G' ~> G )) (f : Sense00_F G),
    g o>Generator_[sval Sense01_E] (Sense1 G f)
    = Sense1 G' (g o>Generator_[sval Sense01_F] f) .

Definition Sense1_data
           Sense00_F (Sense01_F : Sense01_data Sense00_F)
           Sense00_E (Sense01_E : Sense01_data Sense00_E)
  :=  { Sense1 : ( forall G : obGenerator, Sense00_F G -> Sense00_E G ) |
      Sense1_natural Sense01_F Sense01_E Sense1 } .

Definition Sense01_Param_action (Sense00 : obGenerator -> Type)
           (Sense01 : forall G G' : obGenerator,
               'Parametrizator( Parameter0 G' ~> Parameter0 G ) -> Sense00 G -> Sense00 G')
           G G' p x
  := (Sense01 G G' p x).

Notation "p o>Parametrizator_ [ Sense01 ] x" := (@Sense01_Param_action _ Sense01 _ _ p x)
                         (at level 40, x at next level) : poly_scope.
Notation "p o>Parametrizator_ x" := (@Sense01_Param_action _ _ _ _ p x)
                                 (at level 40, x at next level) : poly_scope.

Definition Sense01_Param_functor (Sense00 : obGenerator -> Type)
           (Sense01 : forall G G' : obGenerator,
               'Parametrizator( Parameter0 G' ~> Parameter0 G ) -> Sense00 G -> Sense00 G') : Prop :=
  ( forall G G' (p : 'Parametrizator( Parameter0 G' ~> Parameter0 G )) G'' (p' : 'Parametrizator( Parameter0 G'' ~> Parameter0 G' )) x,
        p' o>Parametrizator_[Sense01] (p o>Parametrizator_[Sense01] x)
        = (p' o>Parametrizator p) o>Parametrizator_[Sense01] x ) /\
  ( forall G x, x = (@unitParametrizator (Parameter0 G)) o>Parametrizator_[Sense01] x ) .

Definition Sense01_Param_data (Sense00 : obGenerator -> Type)
  := { Sense01 : ( forall G G' : obGenerator,
               'Parametrizator( Parameter0 G' ~> Parameter0 G ) -> Sense00 G -> Sense00 G' ) |
                              Sense01_Param_functor Sense01 }.

Definition Sense1_Param_natural
           Sense00_F (Sense01_F : Sense01_Param_data Sense00_F)
           Sense00_E (Sense01_E : Sense01_Param_data Sense00_E)
           (Sense1 : forall G : obGenerator, Sense00_F G -> Sense00_E G) : Prop :=
  forall G G' (p : 'Parametrizator( Parameter0 G' ~> Parameter0 G )) (f : Sense00_F G),
    p o>Parametrizator_[sval Sense01_E] (Sense1 G f)
    = Sense1 G' (p o>Parametrizator_[sval Sense01_F] f) .

Definition Sense1_Param_data
           Sense00_F (Sense01_F : Sense01_Param_data Sense00_F)
           Sense00_E (Sense01_E : Sense01_Param_data Sense00_E)
  :=  { Sense1 : ( forall G : obGenerator, Sense00_F G -> Sense00_E G ) |
      Sense1_Param_natural Sense01_F Sense01_E Sense1 } .

Definition Sense01_data_of_Sense01_Param_data (Sense00 : obGenerator -> Type)
           (Sense01 : Sense01_Param_data Sense00) : Sense01_data Sense00.
Proof.
  exists (fun G G' g => sval Sense01 G G' (Parameter1 g)).
  abstract(move; split; [ intros; simpl; rewrite /Sense01_action /= ; rewrite Parameter_morphism; exact: (proj1 (proj2_sig Sense01))
               | intros; simpl; rewrite /Sense01_action /= ; rewrite -Parameter_unitGenerator; exact: (proj2 (proj2_sig Sense01)) ]).
Defined.

Definition Sense1_data_of_Sense1_Param_data
           Sense00_F (Sense01_F : Sense01_Param_data Sense00_F)
           Sense00_E (Sense01_E : Sense01_Param_data Sense00_E)
           (Sense1 : Sense1_Param_data Sense01_F Sense01_E) :
  Sense1_data (Sense01_data_of_Sense01_Param_data Sense01_F) (Sense01_data_of_Sense01_Param_data Sense01_E).
Proof.
  exists (sval Sense1).
  abstract(move; intros; simpl; rewrite /Sense01_action /= ; exact: (proj2_sig Sense1)).
Defined.

Definition Sense1_FormParam_data
           Sense00_F (Sense01_F : Sense01_data Sense00_F)
           Sense00_E (Sense01_E : Sense01_Param_data Sense00_E)
  := Sense1_data Sense01_F (Sense01_data_of_Sense01_Param_data Sense01_E).

Definition Sense1_FormParam_data_of_Sense1_Param_data
           Sense00_F (Sense01_F : Sense01_Param_data Sense00_F)
           Sense00_E (Sense01_E : Sense01_Param_data Sense00_E)
           (Sense1 : Sense1_Param_data Sense01_F Sense01_E) :
  Sense1_FormParam_data (Sense01_data_of_Sense01_Param_data Sense01_F) Sense01_E.
Proof.
  intros. exact: (Sense1_data_of_Sense1_Param_data Sense1).
Defined.

Lemma Sense1_Param_Id :
  forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F),
    Sense1_Param_data Sense01_Param_F Sense01_Param_F .
Proof.
  intros. exists (fun G => id).
  abstract (intros; move; intros; reflexivity).
Defined.

Definition Sense1_FormParam_Id :
  forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F),
    Sense1_FormParam_data (Sense01_data_of_Sense01_Param_data Sense01_Param_F) Sense01_Param_F .
Proof.
  intros. exact: ( Sense1_data_of_Sense1_Param_data (Sense1_Param_Id _) ).
Defined.

Lemma Sense1_Param_Compos :
  forall Sense00_F1 (Sense01_F1 : Sense01_Param_data Sense00_F1) Sense00_F2 (Sense01_F2 : Sense01_Param_data Sense00_F2)
   (Sense1_ff_ : Sense1_Param_data Sense01_F1 Sense01_F2)
    Sense00_F2' (Sense01_F2' : Sense01_Param_data Sense00_F2')
    (Sense1_ff' : Sense1_Param_data Sense01_F2 Sense01_F2'),
    Sense1_Param_data Sense01_F1 Sense01_F2'.
Proof.
  intros. exists (fun A => (sval Sense1_ff') A \o (sval Sense1_ff_) A ).
  abstract (intros; move; intros; simpl; rewrite (proj2_sig Sense1_ff')
                                            (proj2_sig Sense1_ff_); reflexivity).
Defined.

Notation "''exists'  x  ..." := (exist _ x _) (at level 10, x at next level) : poly_scope.
Notation "[<  data  |  ...  >]" := (exist (fun data : _ => sval _ _ data = _ ) data _) (at level 0) : poly_scope.

Lemma Sense00_View : forall (G : obGenerator), (obGenerator -> Type).
Proof. intros G. refine (fun H => 'Generator( H ~> G ) ). Defined.

Lemma Sense01_View : forall (G : obGenerator), Sense01_data (Sense00_View G) .
Proof.
  intros. unshelve eexists.
  - intros H H' h. refine (fun g => h o>Generator g).
  - abstract (split; [intros; exact: polyGenerator_morphism
                   | intros; exact: polyGenerator_unitGenerator]).
Defined.

Lemma Sense00_Param_View : forall (P : obParametrizator), (obGenerator -> Type).
Proof. intros P. refine (fun Q => 'Parametrizator( Parameter0 Q ~> P ) ). Defined.

Lemma Sense01_Param_View : forall (P : obParametrizator), Sense01_Param_data (Sense00_Param_View P) .
Proof.
  intros. unshelve eexists.
  - intros  G G' q. refine (fun p =>  q o>Parametrizator p).
  - abstract (split; [ intros; rewrite /Sense01_Param_action /= ; rewrite polyParametrizator_morphism; reflexivity
                     | intros; rewrite /Sense01_Param_action /= ; exact: polyParametrizator_unitParametrizator ]) .
Defined.

Lemma Sense1_FormParam_View : forall G : obGenerator , Sense1_FormParam_data (Sense01_View G) (Sense01_Param_View (Parameter0 G)).
Proof.
  intros G. unshelve eexists.
  - intros H. refine (@Parameter1 H G).
  - abstract(move; intros; symmetry; exact: Parameter_morphism).
Defined.

Definition Sense1_Param_ViewMor :
  forall (P : obParametrizator) (Q : obParametrizator) (p : 'Parametrizator( P ~> Q )),
    Sense1_Param_data (Sense01_Param_View P) (Sense01_Param_View Q).
Proof.
  intros. unshelve eexists.
  - intros G. refine (_@ (Parameter0  G) o>Parametrizator p ).
  - abstract (move; intros; rewrite /Sense01_action /= ; exact: polyParametrizator_morphism).
Defined.

Definition element_to_polyelement : forall Sense00_F (Sense01_F : Sense01_Param_data Sense00_F) G,
    Sense00_F G -> Sense1_Param_data  (Sense01_Param_View (Parameter0 G)) Sense01_F .
Proof.
  intros ? ? G f. unshelve eexists.
  apply: (fun G' g => g o>Parametrizator_[sval Sense01_F] f) .
  abstract (move; simpl; intros G' G'' g' g;
            rewrite -(proj1 (proj2_sig Sense01_F)); reflexivity).
Defined.
(** # #
#+END_SRC

** Sense-decodings lemmas : collection of form-elements above one given parameter-element

#+BEGIN_SRC coq :exports both :results silent # # **)
Section Sense00_AtParam_.
Variables (Sense00_Form_F : obGenerator -> Type)
          (Sense01_Form_F : Sense01_data Sense00_Form_F)
          (Sense00_Param_F : obGenerator -> Type)
          (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
          (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F).
Variables (Sense00_Param_F0' : obGenerator -> Type)
          (Sense01_Param_F0' : Sense01_Param_data Sense00_Param_F0').
Variables (Sense1_Param_project : Sense1_Param_data Sense01_Param_F0' Sense01_Param_F).

Definition Sense00_AtParam_
 (G : obGenerator) (param : Sense00_Param_F0' G)
  := {form : Sense00_Form_F G | sval Sense1_FormParam_F G form = sval Sense1_Param_project G param} .

Axiom Sense00_AtParam_quotientLogical :
  forall  (G : obGenerator) (paramlocal : Sense00_Param_F0' G)
     (param param' : Sense00_AtParam_  paramlocal), sval param = sval param' -> param = param'.

Definition Sense01_AtParam_action
  (Sense01_AtParam : ( forall G (param : Sense00_Param_F0' G) (G' : obGenerator) (g : 'Generator( G' ~> G )),
                          Sense00_AtParam_ param -> Sense00_AtParam_ ((Parameter1 g ) o>Parametrizator_[sval Sense01_Param_F0'] param) ))
  G (param : Sense00_Param_F0' G) (G' : obGenerator) (g : 'Generator( G' ~> G ))(form : Sense00_AtParam_ param)
  := (Sense01_AtParam G param G' g form).

End Sense00_AtParam_.

Notation "''Generator' (  G'  ~>  G  @_  Sense1_Param_project  <|  param  )" :=
  (@Sense00_AtParam_ _ _ _ _ (Sense1_FormParam_View G) _ _ Sense1_Param_project G' param) (at level 0) : poly_scope.

Definition polyGenerator_AtParam : forall G (G' : obGenerator) (g' : 'Generator( G' ~> G )),
    forall (Sense00_Param_F0' : obGenerator -> Type) (Sense01_Param_F0' : Sense01_Param_data Sense00_Param_F0')
      (Sense1_Param_project : Sense1_Param_data Sense01_Param_F0' (Sense01_Param_View (Parameter0 G'))),
    forall (G'' : obGenerator) (param' : Sense00_Param_F0' G'') , 'Generator( G'' ~> G' @_ Sense1_Param_project <| param' ) ->
      'Generator( G'' ~> G  @_ (Sense1_Param_Compos Sense1_Param_project (Sense1_Param_ViewMor (Parameter1 g'))) <| param' ) .
Proof.
  intros G G' g' Sense00_Param_F0' Sense01_Param_F0' Sense1_Param_project G'' param' g_; unshelve eexists.  refine (sval g_ o>Generator g').
  - abstract (simpl; rewrite Parameter_morphism;
      rewrite [Parameter1 (sval g_)](proj2_sig g_); reflexivity).
Defined.

Definition unitGenerator_AtParam : forall {G : obGenerator} , 'Generator( G ~> G @_ (Sense1_Param_Id (Sense01_Param_View (Parameter0 G))) <| unitParametrizator ) .
Proof.
  intros. exists (@unitGenerator G).
  abstract (simpl; symmetry; exact: Parameter_unitGenerator).
Defined.

(*TODO: BAD NOTATION TODO: RENAME TO :  o>GeneratorAtParam_View *)
Notation "gp_ o>GeneratorAtParam g'" :=
  (@polyGenerator_AtParam _ _ g' _ _ _ _ _ gp_) (at level 40, g' at next level) : poly_scope.
Notation "g o>GeneratorAtParam_ [ Sense01_AtParam ] form" :=
  (@Sense01_AtParam_action _ _ _ _ _ _ _ _ Sense01_AtParam  _ _ _ g form)
    (at level 40, form at next level) : poly_scope.
Notation "g o>GeneratorAtParam_ form" :=
  (@Sense01_AtParam_action _ _ _ _ _ _ _ _ _  _ _ _ g form)
    (at level 40, form at next level) : poly_scope.

Section Sense01_AtParam_.
Variables (Sense00_Form_F : obGenerator -> Type)
          (Sense01_Form_F : Sense01_data Sense00_Form_F)
          (Sense00_Param_F : obGenerator -> Type)
          (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
          (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F).
Variables (Sense00_Param_F0' : obGenerator -> Type)
          (Sense01_Param_F0' : Sense01_Param_data Sense00_Param_F0').
Variables (Sense1_Param_project : Sense1_Param_data Sense01_Param_F0' Sense01_Param_F).

Definition Sense01_AtParam_functor
  (Sense01_AtParam : forall G (param : Sense00_Param_F0' G) (G' : obGenerator) (g : 'Generator( G' ~> G )),
      Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project param ->
      Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project ((Parameter1 g) o>Parametrizator_[sval Sense01_Param_F0'] param) ) : Prop :=
  ( forall G param G' (g : 'Generator( G' ~> G)) G'' (g' : 'Generator( G'' ~> G')) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project param),
      sval (g' o>GeneratorAtParam_[Sense01_AtParam] (g o>GeneratorAtParam_[Sense01_AtParam] form)) =
      sval ((g' o>Generator g) o>GeneratorAtParam_[Sense01_AtParam] form )) /\
  ( forall G param (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project param),
      sval form = sval ((@unitGenerator G) o>GeneratorAtParam_[Sense01_AtParam] form) ) .

Definition Sense01_AtParam_data
  := { Sense01_AtParam : ( forall G (param : Sense00_Param_F0' G) (G' : obGenerator) (g : 'Generator( G' ~> G )),
                              Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project param -> Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project ((Parameter1 g) o>Parametrizator_[sval Sense01_Param_F0'] param) ) |
       Sense01_AtParam_functor Sense01_AtParam }.

Definition Sense01_AtParam_ : Sense01_AtParam_data.
Proof.
  unshelve eexists.
  - intros G param G' g form. exists (g o>Generator_[sval Sense01_Form_F] (sval form)).
    abstract(rewrite -[RHS](proj2_sig Sense1_Param_project);
             rewrite -[LHS](proj2_sig Sense1_FormParam_F); rewrite [in LHS](proj2_sig form); reflexivity).
  - abstract(split; move; simpl; intros; [ exact: (proj1 (proj2_sig Sense01_Form_F))
                                         | exact: (proj2 (proj2_sig Sense01_Form_F)) ]).
Defined.

(**  TODO: AtParam_ is not functor , instead use everywhere only LocalParam_
 which is functor and is really pullback/fiber of element and is over functor View and over functor Param_F .
 and also using LocalParam_ in defining SumSubstFunctor will make SumSubstFunctor into more structured (?fibration over Param_F?) ...
 and does such directly defined SumSubstFunctor functor fibration over Param_F coincides with colimit of over all the fibers/pullpacks transformations in the topos  ? **)

Definition Sense01_AtParam_transp' :
 forall G (param param' : Sense00_Param_F0' G),  param =  param' ->
      Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project param ->
      Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project param' .
Proof.
  (** /!\ NO! intros until 1; subst; exact: id. Defined. /!\ **)
  intros ? ? ? Heq form. exists (sval form).
  abstract (simpl; subst; exact: (proj2_sig form)).
Defined.

Lemma Sense01_AtParam_transp'P
           (G : obGenerator) (param param' : Sense00_Param_F0' G)
           (Heq : param = param') (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project param) :
  sval form = sval (Sense01_AtParam_transp' Heq form).
Proof.
  reflexivity.
Qed.

Section Section1.

  Variables (Sense1_Param_project' : Sense1_Param_data Sense01_Param_F0' Sense01_Param_F).
  Definition Sense01_AtParam_transp : forall G (param param' : Sense00_Param_F0' G),
      sval Sense1_Param_project _ param = sval Sense1_Param_project' _ param' ->
      Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project param ->
      Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project' param' .
  Proof.
    (** /!\ NO! intros until 1; subst; exact: id. Defined. /!\ **)
    intros ? ? ? Heq form. exists (sval form).
    abstract (simpl; rewrite  (proj2_sig form); assumption).
    (*  abstract (simpl; subst; exact: (proj2_sig form)). *)
  Defined.
  End Section1.

End Sense01_AtParam_.
Lemma Sense01_AtParam_transp'' (*TODO: DO Sense01_AtParam_transp''_prop *)
     : forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
         (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (Sense00_Param_F0' : obGenerator -> Type) (Sense01_Param_F0' : Sense01_Param_data Sense00_Param_F0')
         (Sense1_Param_project : Sense1_Param_data Sense01_Param_F0' Sense01_Param_F)
         (Sense00_Param_F0'' : obGenerator -> Type) (Sense01_Param_F0'' : Sense01_Param_data Sense00_Param_F0'')
         (Sense1_Param_project' : Sense1_Param_data Sense01_Param_F0'' Sense01_Param_F)
         (G : obGenerator) (param : Sense00_Param_F0' G) ( param' : Sense00_Param_F0'' G),
       sval Sense1_Param_project G param = sval Sense1_Param_project' G param' ->
       Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project param -> Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project' param' .
  Proof.
    (** /!\ NO! intros until 1; subst; exact: id. Defined. /!\ **)
    intros ? ? ? ? ? ? ?  ? ? ? ? ? ? ? Heq form. exists (sval form).
    abstract (simpl; rewrite  (proj2_sig form); assumption).
    (*  abstract (simpl; subst; exact: (proj2_sig form)). *)
  Defined.
(** # #
#+END_SRC

** Sense-decodings lemmas : collection of parameter-elements above one given parameter-element

#+BEGIN_SRC coq :exports both :results silent # # **)
Section Sense00_Param_AtParam_.
Variables (Sense00_Param_F' : obGenerator -> Type)
          (Sense01_Param_F' : Sense01_Param_data Sense00_Param_F')
          (Sense00_Param_F : obGenerator -> Type)
          (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
          (Sense1_Param_subst : Sense1_Param_data Sense01_Param_F' Sense01_Param_F).

Definition Sense00_Param_AtParam_
 (G : obGenerator) (param : Sense00_Param_F G)
  := {form : Sense00_Param_F' G | sval Sense1_Param_subst G form = param} .

Definition Sense01_Param_AtParam_action
  (Sense01_Param_AtParam : ( forall G (param : Sense00_Param_F G) (G' : obGenerator) (g : 'Parametrizator( Parameter0 G' ~> Parameter0 G )),
                          Sense00_Param_AtParam_ param -> Sense00_Param_AtParam_ ( g  o>Parametrizator_[sval Sense01_Param_F] param) ))
  G (param : Sense00_Param_F G) (G' : obGenerator) (g : 'Parametrizator( Parameter0 G' ~> Parameter0 G ))(form : Sense00_Param_AtParam_ param)
  := (Sense01_Param_AtParam G param G' g form).

Definition Sense00_Param_AtParam_self
           (G : obGenerator) (param : Sense00_Param_F' G): Sense00_Param_AtParam_ (sval Sense1_Param_subst G param).
Proof.
  exists param. abstract(reflexivity).
Defined.

Definition Sense00_Param_AtParam_selfP
           (G : obGenerator) (param : Sense00_Param_F' G):
  sval (Sense00_Param_AtParam_self param) = param .
Proof.
  reflexivity.
Qed.

Definition Sense00_Param_AtParam_self'
           (G : obGenerator) (param : Sense00_Param_F' G) paramlocal: (sval Sense1_Param_subst G param) = paramlocal -> Sense00_Param_AtParam_  paramlocal.
Proof.
  exists param. abstract(assumption).
Defined.

Definition Sense00_Param_AtParam_self'P
           (G : obGenerator) (param : Sense00_Param_F' G) paramlocal (Heqparam : (sval Sense1_Param_subst G param) = paramlocal) :
  sval (Sense00_Param_AtParam_self' Heqparam) = param .
Proof.
  reflexivity.
Qed.

End Sense00_Param_AtParam_.

Notation "''Parametrizator' (  G'  ~>  P  @_  param  )" :=
  (@Sense00_Param_AtParam_ _ _ _ _ (Sense1_Param_Id (Sense01_Param_View P)) G' param) (at level 0) : poly_scope.

Definition polyGenerator_Param_AtParam : forall P P' (g' : 'Parametrizator( P' ~> P )),
    forall (G'' : obGenerator) (param' : (Sense00_Param_View P') G'') , 'Parametrizator( G'' ~> P' @_ param' ) ->
      'Parametrizator( G'' ~> P  @_ (param' o>Parametrizator g') ) .
Proof.
  intros until param' . intros g_. exists (sval g_ o>Parametrizator g').
  - abstract (simpl; (*rewrite Parameter_morphism;*)
      rewrite [(*Parameter1*) (sval g_)](proj2_sig g_); reflexivity).
Defined.

Definition unitGenerator_Param_AtParam : forall {G : obGenerator} , 'Parametrizator( G ~> Parameter0 G @_  unitParametrizator ) .
Proof.
  intros. exists (@unitParametrizator (Parameter0 G)).
  abstract (simpl; reflexivity (* symmetry;  exact: Parameter_unitGenerator *) ).
Defined.

(*TODO: BAD NOTATION TODO: RENAME TO :  o>GeneratorAtParam_View *)
Notation "gp_ o>ParametrizatorAtParam g'" :=
  (@polyGenerator_Param_AtParam _ _ g' _ _ gp_) (at level 40, g' at next level) : poly_scope.
Notation "g o>ParametrizatorAtParam_ [ Sense01_Param_AtParam ] form" :=
  (@Sense01_Param_AtParam_action _ _ _ _ _ Sense01_Param_AtParam  _ _ _ g form)
    (at level 40, form at next level) : poly_scope.
Notation "g o>ParametrizatorAtParam_ form" :=
  (@Sense01_Param_AtParam_action _ _ _ _ _ _  _ _ _ g form)
    (at level 40, form at next level) : poly_scope.

Section Sense01_Param_AtParam_.
Variables (Sense00_Param_F' : obGenerator -> Type)
          (Sense01_Param_F' : Sense01_Param_data Sense00_Param_F')
          (Sense00_Param_F : obGenerator -> Type)
          (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
          (Sense1_Param_subst : Sense1_Param_data Sense01_Param_F' Sense01_Param_F).

Definition Sense01_Param_AtParam_functor
  (Sense01_Param_AtParam : forall G (param : Sense00_Param_F G) (G' : obGenerator) (g : 'Parametrizator( Parameter0 G' ~> Parameter0 G )),
                                Sense00_Param_AtParam_ Sense1_Param_subst param ->
                                Sense00_Param_AtParam_ Sense1_Param_subst ( g  o>Parametrizator_[sval Sense01_Param_F] param) ) : Prop :=
  ( forall G param G' (g : 'Parametrizator( Parameter0 G' ~> Parameter0 G)) G'' (g' : 'Parametrizator( Parameter0 G'' ~> Parameter0 G')) (form : Sense00_Param_AtParam_ Sense1_Param_subst param),
      sval (g' o>ParametrizatorAtParam_[Sense01_Param_AtParam] (g o>ParametrizatorAtParam_[Sense01_Param_AtParam] form)) =
      sval ((g' o>Parametrizator g) o>ParametrizatorAtParam_[Sense01_Param_AtParam] form )) /\
  ( forall G param (form : Sense00_Param_AtParam_ Sense1_Param_subst param),
      sval form = sval ((@unitParametrizator (Parameter0 G)) o>ParametrizatorAtParam_[Sense01_Param_AtParam] form) ) .

Definition Sense01_Param_AtParam_data
  := { Sense01_Param_AtParam : ( forall G (param : Sense00_Param_F G) (G' : obGenerator) (g : 'Parametrizator( Parameter0 G' ~> Parameter0 G )),
                                Sense00_Param_AtParam_ Sense1_Param_subst param ->
                                Sense00_Param_AtParam_ Sense1_Param_subst ( g  o>Parametrizator_[sval Sense01_Param_F] param) ) |
       Sense01_Param_AtParam_functor Sense01_Param_AtParam }.

Definition Sense01_Param_AtParam_ : Sense01_Param_AtParam_data.
Proof.
  unshelve eexists.
  - intros G param G' g form. exists (g o>Parametrizator_[sval Sense01_Param_F'] (sval form)).
    abstract(rewrite -[LHS](proj2_sig Sense1_Param_subst); rewrite [in LHS](proj2_sig form); reflexivity).
  - abstract(split; move; simpl; intros; [ exact: (proj1 (proj2_sig Sense01_Param_F'))
                                         | exact: (proj2 (proj2_sig Sense01_Param_F')) ]).
Defined.

(**  TODO: AtParam_ is not functor , instead use everywhere only LocalParam_
 which is functor and is really pullback/fiber of element and is over functor View and over functor Param_F .
 and also using LocalParam_ in defining SumSubstFunctor will make SumSubstFunctor into more structured (?fibration over Param_F?) ...
 and does such directly defined SumSubstFunctor functor fibration over Param_F coincides with colimit of over all the fibers/pullpacks transformations in the topos  ? **)
Definition Sense01_Param_AtParam_transp :
 forall G (param param' : Sense00_Param_F G), param = param' ->
      Sense00_Param_AtParam_ Sense1_Param_subst param ->
      Sense00_Param_AtParam_ Sense1_Param_subst param' .
Proof.
  (** /!\ NO! intros until 1; subst; exact: id. Defined. /!\ **)
  intros ? ? ? Heq form. exists (sval form).
  abstract (simpl; subst; exact: (proj2_sig form)).
Defined.

End Sense01_Param_AtParam_.
(** # #
#+END_SRC

** Sense-decodings lemmas : fibre of form-objects above one given parameter-object

#+BEGIN_SRC coq :exports both :results silent # # **)
Module Export inFibre.

  Definition reparamCongrGenerator (G' G : obGenerator)
    := { reparam_reparam_rev : 'Generator( G' ~> G ) * 'Generator( G ~> G' )
       | ((fst reparam_reparam_rev) o>Generator (snd reparam_reparam_rev) = unitGenerator) /\
         ((snd reparam_reparam_rev) o>Generator (fst reparam_reparam_rev) = unitGenerator) } .

  Definition unitGenerator_reparamCongrGenerator (G : obGenerator) : reparamCongrGenerator G G.
    intros. unshelve eexists. split.
    exact: unitGenerator.
    exact: unitGenerator.
    abstract (split; simpl; rewrite -unitGenerator_polyGenerator; reflexivity).
  Defined.

  Definition reparamCongrParametrizator (P' P : obParametrizator)
    := { reparam_reparam_rev : 'Parametrizator( P' ~> P ) * 'Parametrizator( P ~> P' )
       | ((fst reparam_reparam_rev) o>Parametrizator (snd reparam_reparam_rev) = unitParametrizator) /\
         ((snd reparam_reparam_rev) o>Parametrizator (fst reparam_reparam_rev) = unitParametrizator) } .

  Definition unitParametrizator_reparamCongrParametrizator (P : obParametrizator) : reparamCongrParametrizator P P.
    intros. unshelve eexists. split.
    exact: unitParametrizator.
    exact: unitParametrizator.
    abstract (split; simpl; rewrite -unitParametrizator_polyParametrizator; reflexivity).
  Defined.

Notation InFibre G := (unitParametrizator_reparamCongrParametrizator (Parameter0 G)) .

Section inFibre.
Variables (G : obGenerator).

(**TODO: change, the argument [P : obParametrizator] should be given outer first , then [G : obGenerator] is inner *)
Definition inFibre (P : obParametrizator) := reparamCongrParametrizator (Parameter0 G) P .

(*TODO: INLINE *)Definition inFibre_transp_rev_codom :  forall (P : obParametrizator) (inFibre_P : inFibre P),
    forall Q (p : 'Parametrizator( Q ~> Parameter0 G )), 'Parametrizator( Q ~> P ).
Proof.
  intros.  exact: (p o>Parametrizator (fst (sval inFibre_P))) .
Defined.

(*TODO: INLINE , AS NOTATION ? *)Definition inFibre_transp_codom :  forall (P : obParametrizator) (inFibre_P : inFibre P),
    forall Q (p : 'Parametrizator( Q ~> P )), 'Parametrizator( Q ~> Parameter0 G ).
Proof.
  intros.  exact: (p o>Parametrizator (snd (sval inFibre_P))) .
Defined.
End inFibre.

Definition inFibre_transformation :
  forall (G' G : obGenerator) (g :  reparamCongrGenerator G' G),
    ( forall (P : obParametrizator) (inFibre_P : inFibre G P), inFibre G' P ) .
Proof.
  unshelve eexists. split.
  - exact: (Parameter1 (fst (sval g)) o>Parametrizator (fst (sval inFibre_P))).
  - exact: ((snd (sval inFibre_P)) o>Parametrizator (Parameter1 (snd (sval g)))).
  - abstract (split; simpl;
    [ simpl; rewrite polyParametrizator_morphism; rewrite -[X in X o>Parametrizator _ = _ ]polyParametrizator_morphism;
    rewrite (proj1 (proj2_sig inFibre_P)); rewrite -unitParametrizator_polyParametrizator;
    rewrite -Parameter_morphism; rewrite (proj1 (proj2_sig g)); rewrite -Parameter_unitGenerator; reflexivity
    | simpl; rewrite polyParametrizator_morphism; rewrite -[X in X o>Parametrizator _ = _ ]polyParametrizator_morphism;
    rewrite -Parameter_morphism; rewrite (proj2 (proj2_sig g)); rewrite -Parameter_unitGenerator; rewrite -unitParametrizator_polyParametrizator;
    rewrite (proj2 (proj2_sig inFibre_P)); reflexivity ] ).
Defined.

Lemma inFibre_transformation_morphism' :
  forall (G : obGenerator)  (P : obParametrizator) (inFibre_P : inFibre G P),
    fst (sval inFibre_P) = fst (sval (inFibre_transformation (unitGenerator_reparamCongrGenerator _) inFibre_P)) .
  intros. simpl. destruct inFibre_P as [x ?]. simpl. destruct x. simpl.
  rewrite -Parameter_unitGenerator; rewrite -polyParametrizator_unitParametrizator. reflexivity.
Qed.
End inFibre.
(** # #
#+END_SRC

** Sense-decodings lemmas : substitution (pullback) of parameter-morphism along given parameter-morphism

#+BEGIN_SRC coq :exports both :results silent # # **)
Section Subst.
Section Section1.
Variables (Sense00_Param_F : obGenerator -> Type)
          (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
          (Sense00_Param_F_ : obGenerator -> Type)
          (Sense01_Param_F_ : Sense01_Param_data Sense00_Param_F_)
          (Sense1_Param_proj : Sense1_Param_data Sense01_Param_F Sense01_Param_F_)
          (Sense00_Param_F_' : obGenerator -> Type)
          (Sense01_Param_F_' : Sense01_Param_data Sense00_Param_F_')
          (Sense1_Param_subst : Sense1_Param_data Sense01_Param_F_' Sense01_Param_F_).

(** objectwise/componentwise pullback in functor category *)
Definition Sense00_Param_Subst : obGenerator -> Type.
Proof.
  refine (fun H : obGenerator => { xf : Sense00_Param_F_' H &
                                   Sense00_Param_AtParam_ Sense1_Param_proj  (sval Sense1_Param_subst _ xf) } ).
Defined.

Axiom Sense00_Param_Subst_quotientLogical :
  forall G (form form' : Sense00_Param_Subst G), projT1 form = projT1 form' ->
                          (sval (projT2 form)) =  (sval (projT2 form')) -> form = form'.

Definition Sense01_Param_Subst : Sense01_Param_data Sense00_Param_Subst.
Proof.
  unshelve eexists.
  - intros H H' h xf.
    exists ( h o>Parametrizator_[sval Sense01_Param_F_'] (projT1 xf)).
    apply: Sense01_Param_AtParam_transp; last (by  exact (h o>ParametrizatorAtParam_[sval (Sense01_Param_AtParam_ _ )] (projT2 xf)));
      abstract(exact:(proj2_sig Sense1_Param_subst)).
  - abstract (split; simpl;
    first (by intros; apply: Sense00_Param_Subst_quotientLogical; simpl;
           [ rewrite -[in RHS](proj1 (proj2_sig (Sense01_Param_F_')))
           | rewrite -[in RHS](proj1 (proj2_sig (Sense01_Param_F)))]; reflexivity );
    intros H xf; apply: Sense00_Param_Subst_quotientLogical; simpl;
      [ rewrite -[in RHS](proj2 (proj2_sig (Sense01_Param_F_')))
      | rewrite -[in RHS](proj2 (proj2_sig (Sense01_Param_F))) ]; reflexivity).
Defined.

Definition Sense1_Param_Subst_proj : Sense1_Param_data Sense01_Param_Subst Sense01_Param_F_'.
Proof.
  unshelve eexists.
  - intros G xf. exact: (projT1 xf).
  - abstract (move; reflexivity).
Defined.

Definition Sense1_Param_Subst_subst : Sense1_Param_data Sense01_Param_Subst Sense01_Param_F.
Proof.
  unshelve eexists.
  - intros G xf. exact: (sval (projT2 xf)).
  - abstract (move; reflexivity).
Defined.

Definition Sense1_Param_Subst : Sense1_Param_data Sense01_Param_Subst Sense01_Param_F_.
Proof.
  unshelve eexists.
  - intros G xf. exact: (sval Sense1_Param_subst _ (projT1 xf )).
  - abstract (move; simpl; intros; apply: (proj2_sig Sense1_Param_subst)).
Defined.
End Section1.

Definition Sense1_Param_Subst1 :
forall (Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense00_Param_F_ : obGenerator -> Type)
(Sense01_Param_F_ : Sense01_Param_data Sense00_Param_F_)
(Sense1_Param_proj_FF_ : Sense1_Param_data Sense01_Param_F Sense01_Param_F_)
(Sense00_Param_F_' : obGenerator -> Type)
(Sense01_Param_F_' : Sense01_Param_data Sense00_Param_F_')
(Sense1_Param_subst_F_'F_ : Sense1_Param_data Sense01_Param_F_' Sense01_Param_F_)
(Sense00_Param_G : obGenerator -> Type)
(Sense01_Param_G : Sense01_Param_data Sense00_Param_G)
(Sense1_Param_proj_GF_ : Sense1_Param_data Sense01_Param_G Sense01_Param_F_)
(Sense00_Param_G_' : obGenerator -> Type)
(Sense01_Param_G_' : Sense01_Param_data Sense00_Param_G_')
(Sense1_Param_subst_G_'F_ : Sense1_Param_data Sense01_Param_G_' Sense01_Param_F_)
(Sense1_Param_FG : Sense1_Param_data Sense01_Param_F Sense01_Param_G)
(Heq_Param_FG : forall G param, (sval Sense1_Param_proj_GF_ G) ((sval Sense1_Param_FG G) param)
                                        = (sval Sense1_Param_proj_FF_ G) param)
(Sense1_Param_F_'G_' : Sense1_Param_data Sense01_Param_F_' Sense01_Param_G_')
(Heq_Param_F_'G_' : forall G param, (sval Sense1_Param_subst_G_'F_ G) ((sval Sense1_Param_F_'G_' G) param)
                                        = (sval Sense1_Param_subst_F_'F_ G) param),
Sense1_Param_data (Sense01_Param_Subst Sense1_Param_proj_FF_ Sense1_Param_subst_F_'F_) (Sense01_Param_Subst Sense1_Param_proj_GF_ Sense1_Param_subst_G_'F_).
Proof.
  intros; unshelve eexists.
  - intros G sp. exists ( sval Sense1_Param_F_'G_' _ (projT1 sp) ).
    exists ( sval Sense1_Param_FG _ (sval (projT2 sp)) ).
    + abstract(simpl; rewrite [LHS]Heq_Param_FG [RHS]Heq_Param_F_'G_'; exact: (proj2_sig (projT2 sp))).
  - abstract (move; intros; apply: Sense00_Param_Subst_quotientLogical; simpl;
              first (by exact: (proj2_sig Sense1_Param_F_'G_' _ _ )) ;
    exact: (proj2_sig Sense1_Param_FG _ _ )) .
Defined.
End Subst.
(** # #
#+END_SRC

** Sense-decodings lemmas : image of localization (pullback) of parameter-morphism along given parameter-element

#+BEGIN_SRC coq :exports both :results silent # # **)
Section Sense00_LocalParam_.
Section Section0.
Variables (Sense00_Param_F : obGenerator -> Type)
          (Sense01_Param_F : Sense01_Param_data Sense00_Param_F).
Variables (Sense00_Param_F0' : obGenerator -> Type)
          (Sense01_Param_F0' : Sense01_Param_data Sense00_Param_F0').
Variables (Sense1_Param_subst : Sense1_Param_data Sense01_Param_F Sense01_Param_F0').

Definition Sense00_LocalParam_ (G : obGenerator) (paramlocal : Sense00_Param_F0' G)  : obGenerator -> Type.
Proof.
  refine (fun H : obGenerator => { param : Sense00_Param_View (Parameter0 G) H &
                                         Sense00_Param_AtParam_ Sense1_Param_subst
                                                                 (sval (element_to_polyelement Sense01_Param_F0' paramlocal) _ param) } ).
Defined.

(**TODO: add consequence lemma with : [Sense1_LocalParam_proj param = Sense1_LocalParam_proj param' -> param - param']
   MEMO: must quotient the data as such , instead of using ex properties in Sense00_LocalParam_ := { _ | ex _ } .  *)
Axiom Sense00_LocalParam_quotientLogical :
  forall (G : obGenerator) (paramlocal : Sense00_Param_F0' G), forall H (param param' : Sense00_LocalParam_ paramlocal H),
      projT1 param = projT1 param' ->  param = param' .

Definition Sense01_LocalParam_
           (G : obGenerator) (paramlocal : Sense00_Param_F0' G) : Sense01_Param_data (Sense00_LocalParam_ paramlocal).
Proof.
  unshelve eexists.
  - intros H H' h param.
    exists ( h o>Parametrizator_[sval (Sense01_Param_View (Parameter0 G))] (projT1 param)).
    apply: Sense01_Param_AtParam_transp; last (by  exact (h o>ParametrizatorAtParam_[sval (Sense01_Param_AtParam_ _ )] (projT2 param)));
      abstract(exact:(proj2_sig (element_to_polyelement Sense01_Param_F0' paramlocal))).
  - abstract (split; simpl;
      [ intros; apply: Sense00_LocalParam_quotientLogical; simpl;
        rewrite -[in RHS](proj1 (proj2_sig (Sense01_Param_View (Parameter0 G)))); reflexivity
      | intros H param; apply: Sense00_LocalParam_quotientLogical; simpl;
        rewrite -[in RHS](proj2 (proj2_sig ((Sense01_Param_View (Parameter0 G))))); reflexivity ] ).
Defined.

Definition Sense1_LocalParam_proj (G : obGenerator) (paramlocal : Sense00_Param_F0' G) : forall  (P : obParametrizator) (inFibre_P : inFibre G P), Sense1_Param_data (Sense01_LocalParam_ paramlocal) (Sense01_Param_View P).
Proof.
  intros. refine (Sense1_Param_Compos _ (Sense1_Param_ViewMor (fst (sval inFibre_P)))). unshelve eexists.
  - intros G0 param.  exact: (projT1 param).
  - abstract (move; intros; simpl; reflexivity).
Defined.

Definition Sense1_LocalParam (G : obGenerator) (paramlocal : Sense00_Param_F0' G) : Sense1_Param_data (Sense01_LocalParam_ paramlocal) Sense01_Param_F0'.
Proof.
  unshelve eexists.
  - intros H param.
    exact: ((projT1 param) o>Parametrizator_[sval Sense01_Param_F0'] paramlocal).
  - abstract (move; simpl; intros; exact: (proj1 (proj2_sig Sense01_Param_F0'))).
Defined.

Definition Sense01_LocalParam_transp
           (G : obGenerator) (param param' : Sense00_Param_F0' G) :
  param = param' -> Sense1_Param_data (Sense01_LocalParam_ param)
                                  (Sense01_LocalParam_ param').
Proof.
  (** /!\ NO! intros; subst; exact: Sense1_Param_Id. Defined. /!\ **)
  intros Heq. unshelve eexists.
  - intros H h_form. exists (projT1 h_form).
    apply: Sense01_Param_AtParam_transp; last (by exact: (projT2 h_form));
    abstract(simpl; subst; reflexivity).
  - abstract (move; intros; apply: Sense00_LocalParam_quotientLogical; reflexivity).
Defined.

Lemma Sense01_LocalParam_transpP
           (G : obGenerator) (param param' : Sense00_Param_F0' G) (H : obGenerator)
           (Heq : param = param') (h_form : Sense00_LocalParam_  param H) :
   projT1 h_form = projT1 (sval (Sense01_LocalParam_transp Heq) _ h_form).
Proof.
  reflexivity.
Qed.

Definition Sense00_LocalParam_of_Sense00_Param_AtParam_
           (G : obGenerator) (param : Sense00_Param_F0' G) :
  Sense00_Param_AtParam_ Sense1_Param_subst param -> Sense00_LocalParam_  param G.
Proof.
  intros paramlocal. exists unitParametrizator. exists (sval paramlocal).
  abstract (simpl; rewrite -(proj2 (proj2_sig Sense01_Param_F0')); exact: (proj2_sig paramlocal)).
Defined.

Definition Sense01_LocalParam_postcomposition
           (G : obGenerator) (param : Sense00_Param_F0' G) G' (p : 'Parametrizator( Parameter0 G' ~> Parameter0 G)):
  Sense1_Param_data (Sense01_LocalParam_ (p o>Parametrizator_[sval Sense01_Param_F0' ] param))
                (Sense01_LocalParam_ param).
Proof.
   unshelve eexists.
   intros H h_form. exists ( projT1 h_form o>Parametrizator p ). exists (sval (projT2 h_form)).
   abstract (simpl; rewrite [LHS](proj2_sig (projT2 h_form)); simpl; rewrite (proj1 (proj2_sig  Sense01_Param_F0')); reflexivity).
   abstract (move; simpl; intros; apply: Sense00_LocalParam_quotientLogical; simpl;
             exact: polyParametrizator_morphism).
Defined.

Definition Sense01_LocalParam_postcomposition'
           (G : obGenerator) (param : Sense00_Param_F0' G) G'
           (p : 'Parametrizator( Parameter0 G' ~> Parameter0 G)) (param' : Sense00_Param_F0' G')
           (Heq: param' = (p o>Parametrizator_[sval Sense01_Param_F0' ] param)) :
  Sense1_Param_data (Sense01_LocalParam_ param')
                (Sense01_LocalParam_ param).
Proof.
  unshelve eexists. intros H h_form. exists ( projT1 h_form o>Parametrizator p ). exists (sval (projT2 h_form)).
   abstract (simpl; intros; subst; rewrite [LHS](proj2_sig (projT2 h_form)); simpl; rewrite (proj1 (proj2_sig  Sense01_Param_F0')); reflexivity).
   abstract (move; simpl; intros; apply: Sense00_LocalParam_quotientLogical; simpl;
             exact: polyParametrizator_morphism).
Defined.

End Section0.

End Sense00_LocalParam_.
(** # #
#+END_SRC

** Sense-decodings lemmas : total (pullback) parameter-object of one given parameter-morphism

#+BEGIN_SRC coq :exports both :results silent # # **)
Section Sum.
Variables (Sense00_Param_F : obGenerator -> Type)
          (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
          (Sense00_Param_SumF : obGenerator -> Type)
          (Sense01_Param_SumF : Sense01_Param_data Sense00_Param_SumF)
          (Sense1_Param_subst : Sense1_Param_data Sense01_Param_F Sense01_Param_SumF).

Definition Sense00_Param_Sum : obGenerator -> Type
:= Sense00_Param_Subst Sense1_Param_subst (Sense1_Param_Id _) .

Lemma Sense00_Param_Sum_quotientLogical :
  forall G (form form' : Sense00_Param_Sum G), projT1 form = projT1 form' -> sval (projT2 form) = sval (projT2 form') -> form = form' .
Proof.
  intros; apply: Sense00_Param_Subst_quotientLogical; simpl; assumption.
Qed.

Definition Sense01_Param_Sum : Sense01_Param_data Sense00_Param_Sum
:= Sense01_Param_Subst Sense1_Param_subst (Sense1_Param_Id _) .

Definition Sense1_Param_Sum : Sense1_Param_data Sense01_Param_Sum Sense01_Param_SumF
:= Sense1_Param_Subst Sense1_Param_subst (Sense1_Param_Id _) .

(**TODO: this is used at reparamCongr_Constructing_default_comp_Destructing_default_reparam *)
Definition Sense1_Param_Sum_subst : Sense1_Param_data Sense01_Param_Sum Sense01_Param_F
:= Sense1_Param_Subst_subst Sense1_Param_subst (Sense1_Param_Id _) .

End Sum.
(** # #
#+END_SRC

** Sense-decodings of objects : viewing functor of parameter-object , or image of total (pullback) parameter-object of one given parameter-morphism

#+BEGIN_SRC coq :exports both :results silent # # **)
Section SumImage.
Variables (Sense00_Param_SubstF : obGenerator -> Type)
          (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
          (Sense00_Param_F : obGenerator -> Type)
          (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
          (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F).

Definition Sense00_Param_SumImage : obGenerator -> Type.
Proof.
  refine (fun H : obGenerator => { param : Sense00_Param_F H &
                                   Sense00_Param_AtParam_ Sense1_Param_subst param } ).
Defined.

Axiom Sense00_Param_SumImage_quotientLogical :
  forall G (paramm paramm' : Sense00_Param_SumImage G), projT1 paramm = projT1 paramm' ->  paramm = paramm' .

Definition Sense01_Param_SumImage : Sense01_Param_data Sense00_Param_SumImage.
Proof.
  unshelve eexists.
  - intros G G' g paramm.
    exists ( g o>Parametrizator_[sval Sense01_Param_F] (projT1 paramm)).
    { (*logical part *)
      abstract (apply: Sense01_Param_AtParam_transp; first reflexivity;
                exact (g o>ParametrizatorAtParam_[sval (Sense01_Param_AtParam_ _ )] (projT2 paramm))).
    }
  - abstract (split; simpl;
    first (by intros; apply: Sense00_Param_SumImage_quotientLogical; simpl;
           rewrite -[in RHS](proj1 (proj2_sig (Sense01_Param_F))); reflexivity);
    intros G paramm; apply: Sense00_Param_SumImage_quotientLogical; simpl;
      rewrite -[in RHS](proj2 (proj2_sig (Sense01_Param_F))); reflexivity).
Defined.

Definition Sense1_Param_SumImage : Sense1_Param_data Sense01_Param_SumImage Sense01_Param_F.
Proof.
  unshelve eexists.
  - intros G paramm. exact: (projT1 paramm).
  - abstract (move; reflexivity).
Defined.

End SumImage.
(** # #
#+END_SRC

** Sense-decodings of objects : viewing functor ( sum-substitution of form-object ) along pparameter-morphisms (span of two parameter-morphisms)

#+BEGIN_SRC coq :exports both :results silent # # **)
Section SumSubst.
Variables (Sense00_Form_F : obGenerator -> Type)
          (Sense01_Form_F : Sense01_data Sense00_Form_F)
          (Sense00_Param_F : obGenerator -> Type)
          (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
          (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
          (Sense00_Param_SubstF : obGenerator -> Type)
          (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
          (Sense00_Param_SumSubstF : obGenerator -> Type)
          (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
          (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
          (Sense1_Param_project : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F).

Definition Sense00_Form_SumSubst : obGenerator -> Type.
Proof.
  refine (fun H : obGenerator => { p : Sense00_Param_SumSubstF H & (* { V : obViewing H & *)
         { s : (* forall (H' : obGenerator) (h : 'Generator( H' ~> H (* | V *) ))  quantify some covering of H ...*)
             Sense00_Param_AtParam_ Sense1_Param_subst p &
             (* forall (H' : obGenerator) (h : 'Generator( H' ~> H (* | V *) ))    quantify same or included covering of H ? ... , *)
             Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_project (sval s (* h *)) } } ).
Defined.

Axiom Sense00_Form_SumSubst_quotientLogical :
  forall G (form form' : Sense00_Form_SumSubst G), projT1 form = projT1 form ->
    sval (projT1 (projT2 form)) = sval (projT1 (projT2 form'))  -> sval (projT2 (projT2 form)) = sval (projT2 (projT2 form'))  -> form = form' .

Definition Sense01_Form_SumSubst : Sense01_data Sense00_Form_SumSubst.
Proof.
  unshelve eexists.
  - intros H H' h pf_.
    exists ( (Parameter1 h) o>Parametrizator_[sval Sense01_Param_SumSubstF] (projT1 pf_) ). unshelve eexists.
    + exact: ((Parameter1 h) o>ParametrizatorAtParam_ [ sval (Sense01_Param_AtParam_ _) ] (projT1 (projT2 pf_))).
    + simpl. exact: ( h o>GeneratorAtParam_ [ sval (Sense01_AtParam_ _ _) ] (projT2 (projT2 pf_))) .
  - abstract (move; simpl; split;
    [ intros; apply: Sense00_Form_SumSubst_quotientLogical; simpl;
      [ reflexivity | rewrite Parameter_morphism; exact: (proj1 (proj2_sig Sense01_Param_SubstF))
      | exact: (proj1 (proj2_sig Sense01_Form_F)) ]
    | intros; apply: Sense00_Form_SumSubst_quotientLogical; simpl;
      [ reflexivity | rewrite -Parameter_unitGenerator; exact: (proj2 (proj2_sig Sense01_Param_SubstF))
      | exact: (proj2 (proj2_sig Sense01_Form_F)) ] ] ) .
Defined.

Definition Sense1_FormParam_SumSubst : Sense1_FormParam_data Sense01_Form_SumSubst (Sense01_Param_SumImage Sense1_Param_subst). (* well-defined *)
Proof.
  unshelve eexists.
  - intros G param_form. exists (projT1 param_form).
    { (* logical part *) abstract (exact: (projT1 (projT2 param_form))). }
  - abstract (move; intros; apply: Sense00_Param_SumImage_quotientLogical; simpl; reflexivity).
Defined.

End SumSubst.
(** # #
#+END_SRC

** Sense-decodings of objects : product-substitution of form-object along pparameter-morphisms (span of two parameter-morphisms)

#+BEGIN_SRC coq :exports both :results silent # # **)
Section PiSubst.
Variables (Sense00_Form_F : obGenerator -> Type)
          (Sense01_Form_F : Sense01_data Sense00_Form_F)
          (Sense00_Param_F : obGenerator -> Type)
          (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
          (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
          (Sense00_Param_SubstF : obGenerator -> Type)
          (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
          (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
          (Sense00_Param_PiSubstF : obGenerator -> Type)
          (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
          (Sense1_Param_project : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF).

Definition Sense00_Form_PiSubst : obGenerator -> Type.
Proof.
  refine (fun H : obGenerator => { p : Sense00_Param_PiSubstF H &
    { f_ : ( forall (H' : obGenerator) (h : 'Generator( H' ~> H ) (* | V *) ) , (*  quantify some covering of H ...*)
               forall (s : Sense00_Param_AtParam_ Sense1_Param_project ((Parameter1 h) o>Parametrizator_[sval Sense01_Param_PiSubstF] p) ),
              Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_subst (sval s) ) |
      forall H' (h : 'Generator( H' ~> H )) s,
      forall H'' (h' : 'Generator( H'' ~> H' )) (h'h : 'Generator( H'' ~> H )) s_H'',
      forall Heq_arrow : h' o>Generator h = h'h ,
      forall Heq_param : sval ((Parameter1 h') o>ParametrizatorAtParam_[sval (Sense01_Param_AtParam_ _ )] s) = sval s_H'' ,
        sval (h' o>GeneratorAtParam_[sval (Sense01_AtParam_ _ _)] (f_ H' h s)) = sval (f_ H'' h'h s_H'') } } ).
Defined.

(** *)
Axiom Sense00_Form_PiSubst_quotientLogical_ALT :
  forall G (form form' : Sense00_Form_PiSubst G),
    (forall  (G' : obGenerator) (g : 'Generator( G' ~> G )) s s', sval s = sval s' ->
                                                             sval (sval (projT2 form) _ g s) = sval (sval (projT2 form') _ g s')) -> form = form' .

Lemma Sense00_Form_PiSubst_quotientLogical_rev :
  forall G (form form' : Sense00_Form_PiSubst G),
    form = form' -> (forall s s', sval s = sval s' -> sval (sval (projT2 form) _ (unitGenerator) s) = sval (sval (projT2 form') _ (unitGenerator) s'))  .
  intros. subst. rewrite [LHS](proj2 (proj2_sig Sense01_Form_F)).  apply: (proj2_sig (projT2 form')) .
  - symmetry. exact: polyGenerator_unitGenerator.
  - rewrite -H0. symmetry. simpl. exact: (proj2 (proj2_sig (Sense01_data_of_Sense01_Param_data Sense01_Param_SubstF))).
Qed.

Definition Sense01_Form_PiSubst : Sense01_data Sense00_Form_PiSubst.
Proof.
  unshelve eexists.
  - intros H H' h pf_.
    exists ( (Parameter1 h) o>Parametrizator_[sval Sense01_Param_PiSubstF] (projT1 pf_) ). unshelve eexists.
    + intros H'' h' s.
      have [:proj2_sig_s0] @f_ :  Sense00_Form_F H''. refine (sval (sval (projT2 pf_ ) _ (h' o>Generator h) _)).
      exists (sval s).  abstract: proj2_sig_s0. abstract (simpl; intros; rewrite Parameter_morphism;
                                                     rewrite -[RHS](proj1 (proj2_sig Sense01_Param_PiSubstF)); exact: (proj2_sig s)).
      exists (  f_ ) .
      abstract (exact: (proj2_sig (sval (projT2 pf_) _ (h' o>Generator h) (exist _ (sval s) proj2_sig_s0)))).
    + abstract (simpl; intros H'' h' s H''' h'' h''h' s_H''' Heq_arrow Heq_param;
      apply: (proj2_sig (projT2 pf_) (* unitGenerator *)) ;
        first (by rewrite [LHS]polyGenerator_morphism ; congr (_ o>Generator _) ; eassumption);
      simpl; eassumption).
  - abstract (split; [ simpl; intros G G' g G'' g' f_ ; apply: Sense00_Form_PiSubst_quotientLogical_ALT; simpl; intros;
      rewrite [LHS](proj2 (proj2_sig (Sense01_Form_F)));
      apply: (proj2_sig (projT2 f_) (* unitGenerator *));
        first (by rewrite -[in LHS]polyGenerator_unitGenerator; symmetry; exact: polyGenerator_morphism);
        simpl; rewrite -[in LHS]Parameter_unitGenerator; rewrite -[in LHS](proj2 (proj2_sig Sense01_Param_SubstF)); assumption
     | intros G f_; apply: Sense00_Form_PiSubst_quotientLogical_ALT; simpl; intros;
      rewrite [LHS](proj2 (proj2_sig (Sense01_Form_F)));
      apply: (proj2_sig (projT2 f_) (* unitGenerator *));
      first (by rewrite -polyGenerator_unitGenerator; rewrite -unitGenerator_polyGenerator ; reflexivity);
      simpl; rewrite -[in LHS]Parameter_unitGenerator; rewrite -[in LHS](proj2 (proj2_sig Sense01_Param_SubstF)); assumption ] ) .
Defined.

Definition Sense1_FormParam_PiSubst : Sense1_FormParam_data Sense01_Form_PiSubst Sense01_Param_PiSubstF.
Proof.
  unshelve eexists.
  - intros G psf_. exact: (projT1 psf_).
  - abstract (move; reflexivity).
Defined.

End PiSubst.
(** # #
#+END_SRC

** Sense-decodings lemmas : form-morphism (natural transformation) over some given pparameter-morphisms (span of two parameter-morphisms)

#+BEGIN_SRC coq :exports both :results silent # # **)
Section Sense1_Form_data.
Variables (Sense00_Form_E : obGenerator -> Type)
          (Sense01_Form_E : Sense01_data Sense00_Form_E)
          (Sense00_Param_E : obGenerator -> Type)
          (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
          (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E).
Variables  (Sense00_Form_F : obGenerator -> Type)
           (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type)
           (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F).
Variables (Sense00_Param_E0' : obGenerator -> Type)
          (Sense01_Param_E0' : Sense01_Param_data Sense00_Param_E0').
Variables (Sense1_Param_project : Sense1_Param_data Sense01_Param_E0' Sense01_Param_E).
Variables (Sense1_Param_subst : Sense1_Param_data Sense01_Param_E0' Sense01_Param_F).

  Section Section1.
  Variables (Sense1_Form_ff : forall (G : obGenerator) (param : Sense00_Param_E0' G),
                Sense00_AtParam_ Sense1_FormParam_E Sense1_Param_project param ->
                Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_subst param).

  Definition Sense1_Form_natural
    := forall (G : obGenerator) (param : Sense00_Param_E0' G) (G' : obGenerator)
         (g : 'Generator( G' ~> G )) (form : Sense00_AtParam_ Sense1_FormParam_E Sense1_Param_project param),
      sval (g o>GeneratorAtParam_[sval (Sense01_AtParam_(Sense1_FormParam_F) Sense1_Param_subst)] (@Sense1_Form_ff G param form))
      = sval (@Sense1_Form_ff G' ((Parameter1 g) o>Parametrizator_[sval Sense01_Param_E0'] param)
             (g o>GeneratorAtParam_[sval (Sense01_AtParam_(Sense1_FormParam_E) Sense1_Param_project)] form)) .

  (** /!\ YES /!\ *)

  Definition Sense1_Form_quotientLogical
    := forall (G : obGenerator) (param : Sense00_Param_E0' G) (form : Sense00_AtParam_ Sense1_FormParam_E Sense1_Param_project  param)
         (param' : Sense00_Param_E0' G) (form' : Sense00_AtParam_ Sense1_FormParam_E Sense1_Param_project param'),
      param = param' -> sval form = sval form' ->
      sval (@Sense1_Form_ff G param form) = sval (@Sense1_Form_ff G param' form') .
  End Section1.

Definition Sense1_Form_data :=
  { Sense1_Form : forall (G : obGenerator) (param : Sense00_Param_E0' G),
      Sense00_AtParam_ Sense1_FormParam_E Sense1_Param_project param ->
      Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_subst param |
    Sense1_Form_natural Sense1_Form /\
    Sense1_Form_quotientLogical Sense1_Form } .

End Sense1_Form_data.

Definition Sense1_Unit_Param := Sense1_Param_Id.

Section Sense1_Compos_pseudoCode_PParam.
  Variables (Sense00_Param_F : obGenerator -> Type)
            (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
            (Sense00_Param_F' : obGenerator -> Type)
            (Sense01_Param_F' : Sense01_Param_data Sense00_Param_F')
            (Sense00_Param_F'F : obGenerator -> Type)
            (Sense01_Param_F'F : Sense01_Param_data Sense00_Param_F'F)
            (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F')
            (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F)
            (Sense00_Param_F'' : obGenerator -> Type)
            (Sense01_Param_F'' : Sense01_Param_data Sense00_Param_F'')
            (Sense00_Param_F''F' : obGenerator -> Type)
            (Sense01_Param_F''F' : Sense01_Param_data Sense00_Param_F''F')
            (Sense1_Param_proj_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F'')
            (Sense1_Param_subst_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F').

Definition Sense1_Compos_pseudoCode_PParam_proj : Sense1_Param_data (Sense01_Param_Subst Sense1_Param_proj_ff' Sense1_Param_subst_ff_) Sense01_Param_F''.
Proof.
  exact: (Sense1_Param_Compos (Sense1_Param_Subst_proj Sense1_Param_proj_ff' Sense1_Param_subst_ff_) Sense1_Param_proj_ff_).
Defined.

Definition Sense1_Compos_pseudoCode_PParam_subst : Sense1_Param_data (Sense01_Param_Subst Sense1_Param_proj_ff' Sense1_Param_subst_ff_) Sense01_Param_F.
Proof.
  exact: (Sense1_Param_Compos (Sense1_Param_Subst_subst Sense1_Param_proj_ff' Sense1_Param_subst_ff_) Sense1_Param_subst_ff').
Defined.

End Sense1_Compos_pseudoCode_PParam.
(** # #
#+END_SRC

** Sense-decodings of objects : format ( context-extension ) parameter-object of given form-object over given parameter-object

#+BEGIN_SRC coq :exports both :results silent # # **)
Module Export Format.

Definition Repres0 : obGenerator -> obGenerator := fun A => A.
Parameter Repres1 : forall A A' : obGenerator,
    'Parametrizator( Parameter0 A ~> Parameter0 A')  -> 'Generator( (** Repres0 *) A ~> (** Repres0 *) A' ) .
Axiom Repres_morphism :
  forall (A A' : obGenerator) (p' : 'Parametrizator( Parameter0 A' ~> Parameter0 A ))
    (A'' : obGenerator) (p_ : 'Parametrizator( Parameter0 A'' ~> Parameter0 A' )),
    Repres1 ( p_ o>Parametrizator p' ) = ( Repres1 p_ ) o>Generator (Repres1 p').
Axiom Repres_unitGenerator :
  forall (A : obGenerator),
    (@unitGenerator A) = ( Repres1 (@unitParametrizator (Parameter0 A)) ) .
Axiom Repres_Parameter : forall A A' : obGenerator,
    forall (p : 'Parametrizator( Parameter0 A ~> Parameter0 A')),
  Parameter1 (Repres1 p) = p .
Definition Sense01_Param_of_Sense01_Form (Sense00_Form_F : obGenerator -> Type)
           (Sense01_Form_F : Sense01_data Sense00_Form_F) :
  Sense01_Param_data Sense00_Form_F .
Proof.
  unshelve eexists. intros G G' p. exact: (sval Sense01_Form_F G G' (Repres1 p)).
  abstract (split; simpl; intros; rewrite /Sense01_Param_action /= ;
    [ rewrite Repres_morphism [LHS](proj1 (proj2_sig Sense01_Form_F)); reflexivity
    | rewrite -Repres_unitGenerator [LHS](proj2 (proj2_sig Sense01_Form_F)); reflexivity ] ).
Defined.

Definition Sense1_Param_of_Sense1_FormParam  (Sense00_Form_F : obGenerator -> Type)
          (Sense01_Form_F : Sense01_data Sense00_Form_F)
          (Sense00_Param_F : obGenerator -> Type)
          (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
          (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) :
  Sense1_Param_data (Sense01_Param_of_Sense01_Form Sense01_Form_F) Sense01_Param_F .
Proof.
  exists (sval Sense1_FormParam_F).
  abstract (move; simpl; intros G G' p f;
    rewrite [in RHS]/Sense01_Param_action [in RHS]/= ;
    rewrite -[RHS](proj2_sig Sense1_FormParam_F);
    rewrite [in RHS]/Sense01_action [in RHS]/= ;
    rewrite [in RHS] Repres_Parameter; reflexivity ).
Defined.

Section Section1.
Variables (Sense00_Form_F : obGenerator -> Type)
          (Sense01_Form_F : Sense01_data Sense00_Form_F)
          (Sense00_Param_F : obGenerator -> Type)
          (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
          (Sense1_FormParam_F : Sense1_Param_data (Sense01_Param_of_Sense01_Form Sense01_Form_F) Sense01_Param_F)
          (Sense00_Param_F' : obGenerator -> Type)
          (Sense01_Param_F' : Sense01_Param_data Sense00_Param_F')
          (Sense1_Param_proj : Sense1_Param_data Sense01_Param_F' Sense01_Param_F).

(** objectwise/componentwise pullback in functor category *)
Definition Sense00_Param_Format : obGenerator -> Type.
Proof.
  refine (fun H : obGenerator => { xf : Sense00_Param_F' H &
                                   Sense00_Param_AtParam_ Sense1_FormParam_F  (sval Sense1_Param_proj _ xf) } ).
Defined.

Axiom Sense00_Param_Format_quotientLogical :
  forall G (form form' : Sense00_Param_Format G), projT1 form = projT1 form' ->
                          (sval (projT2 form)) =  (sval (projT2 form')) -> form = form'.

Definition Sense01_Param_Format : Sense01_Param_data Sense00_Param_Format.
Proof.
  unshelve eexists.
  - intros H H' h xf.
    exists ( h o>Parametrizator_[sval Sense01_Param_F'] (projT1 xf)).
    apply: Sense01_Param_AtParam_transp; last (by  exact (h o>ParametrizatorAtParam_[sval (Sense01_Param_AtParam_ _ )] (projT2 xf)));
      abstract(exact:(proj2_sig Sense1_Param_proj)).
  - abstract (split; simpl;
    first (by intros; apply: Sense00_Param_Format_quotientLogical; simpl;
           [ rewrite -[in RHS](proj1 (proj2_sig (Sense01_Param_F')))
           | rewrite -[in RHS](proj1 (proj2_sig (Sense01_Param_of_Sense01_Form Sense01_Form_F)))]; reflexivity );
    intros H xf; apply: Sense00_Param_Format_quotientLogical; simpl;
      [ rewrite -[in RHS](proj2 (proj2_sig (Sense01_Param_F')))
      | rewrite -[in RHS](proj2 (proj2_sig (Sense01_Param_of_Sense01_Form Sense01_Form_F))) ]; reflexivity).
Defined.

Definition Sense1_Param_Format_param : Sense1_Param_data Sense01_Param_Format Sense01_Param_F'.
Proof.
  unshelve eexists.
  - intros G xf. exact: (projT1 xf).
  - abstract (move; reflexivity).
Defined.

Definition Sense1_Param_Format_form : Sense1_Param_data Sense01_Param_Format (Sense01_Param_of_Sense01_Form Sense01_Form_F).
Proof.
  unshelve eexists.
  - intros G xf. exact: (sval (projT2 xf)).
  - abstract (move; reflexivity).
Defined.

Definition Sense1_Param_Format : Sense1_Param_data Sense01_Param_Format Sense01_Param_F.
Proof.
  unshelve eexists.
  - intros G xf. exact: (sval Sense1_Param_proj _ (projT1 xf )).
  - abstract (move; simpl; intros; apply: (proj2_sig Sense1_Param_proj)).
Defined.
End Section1.

Definition Sense1_Param_Format_subst :
forall (Sense00_Form_E : obGenerator -> Type)
(Sense01_Form_E : Sense01_data Sense00_Form_E)
(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(Sense00_Form_F : obGenerator -> Type)
(Sense01_Form_F : Sense01_data Sense00_Form_F)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
(Sense00_Param_EF : obGenerator -> Type)
(Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
(Sense1_Param_proj : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
(Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst),
  Sense1_Param_data (Sense01_Param_Format (Sense1_Param_of_Sense1_FormParam Sense1_FormParam_E) Sense1_Param_proj)
               (Sense01_Param_Format (Sense1_Param_of_Sense1_FormParam Sense1_FormParam_F) (Sense1_Param_Id Sense01_Param_F)).
Proof.
  unshelve eexists.
  - intros G e_ef. unshelve eexists.
    + refine (sval Sense1_Param_subst G _ ) ;  exact: (sval (Sense1_Param_Format_param _ _ ) _ e_ef).
    + unshelve eexists.
      * refine (sval (sval Sense1_Form_ff G  (sval (Sense1_Param_Format_param _ _ ) _ e_ef)  _ )).
        { exists (sval (Sense1_Param_Format_form _ _ ) _ e_ef).
          abstract (simpl; exact: (proj2_sig (projT2 e_ef))).
        }
      * abstract (simpl; exact: (proj2_sig (sval Sense1_Form_ff G  (sval (Sense1_Param_Format_param _ _ ) _ e_ef)  _ ))).
  - abstract (move; simpl; intros; apply: Sense00_Param_Format_quotientLogical; simpl; [
      exact: (proj2_sig Sense1_Param_subst )
    | rewrite [LHS](proj1 (proj2_sig Sense1_Form_ff)) ;  simpl;
      apply (proj2 (proj2_sig Sense1_Form_ff)) ; simpl; last (by reflexivity);
      simpl; rewrite Repres_Parameter; reflexivity ] ).
Defined.

End Format.
(** # #
#+END_SRC

** Sense-decodings of morphisms : Compos (composition) form-morphism , Unit (identity) form-morphism

#+BEGIN_SRC coq :exports both :results silent # # **)
Definition Sense1_Form_Compos :
forall (Sense00_Form_F : obGenerator -> Type)
(Sense01_Form_F : Sense01_data Sense00_Form_F)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
(Sense00_Form_F' : obGenerator -> Type)
(Sense01_Form_F' : Sense01_data Sense00_Form_F')
(Sense00_Param_F' : obGenerator -> Type)
(Sense01_Param_F' : Sense01_Param_data Sense00_Param_F')
(Sense1_FormParam_F' : Sense1_FormParam_data Sense01_Form_F' Sense01_Param_F')
(Sense00_Param_F'0' : obGenerator -> Type)
(Sense01_Param_F'0' : Sense01_Param_data Sense00_Param_F'0')
(Sense1_Param_proj_Param_F' : Sense1_Param_data Sense01_Param_F'0' Sense01_Param_F')
(Sense1_Param_ff' : Sense1_Param_data Sense01_Param_F'0' Sense01_Param_F)
(Sense1_Form_ff' : Sense1_Form_data Sense1_FormParam_F' Sense1_FormParam_F Sense1_Param_proj_Param_F' Sense1_Param_ff')
(Sense00_Form_F'' : obGenerator -> Type)
(Sense01_Form_F'' : Sense01_data Sense00_Form_F'')
(Sense00_Param_F'' : obGenerator -> Type)
(Sense01_Param_F'' : Sense01_Param_data Sense00_Param_F'')
(Sense1_FormParam_F'' : Sense1_FormParam_data Sense01_Form_F'' Sense01_Param_F'')
(Sense00_Param_F''0' : obGenerator -> Type)
(Sense01_Param_F''0' : Sense01_Param_data Sense00_Param_F''0')
(Sense1_Param_proj_Param_F'' : Sense1_Param_data Sense01_Param_F''0' Sense01_Param_F'')
(Sense1_Param_ff_ : Sense1_Param_data Sense01_Param_F''0' Sense01_Param_F')
(Sense1_Form_ff_ : Sense1_Form_data Sense1_FormParam_F'' Sense1_FormParam_F' Sense1_Param_proj_Param_F'' Sense1_Param_ff_),
  Sense1_Form_data Sense1_FormParam_F'' Sense1_FormParam_F
                    (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_Param_F'  Sense1_Param_proj_Param_F'' Sense1_Param_ff_)
                    (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_Param_F' Sense1_Param_ff' Sense1_Param_ff_) .
Proof.
  intros. unshelve eexists.
  - intros G param dataIn. unshelve eexists.
    + apply: (sval (sval Sense1_Form_ff' G (sval (projT2 param)) _)).
      pose dataMid := (sval Sense1_Form_ff_ G (projT1 param) dataIn). unshelve eexists.
      * exact: (sval dataMid).
      * abstract(rewrite [LHS](proj2_sig dataMid); symmetry; exact (proj2_sig (projT2 param))).
    + abstract (set tmp := (sval Sense1_Form_ff' G (sval (projT2 param)) _);
                           exact: (proj2_sig tmp)).
  - abstract (split; [ move; simpl; intros; rewrite [LHS](proj1 (proj2_sig Sense1_Form_ff'));
      apply: (proj2 (proj2_sig Sense1_Form_ff')); first reflexivity;
        simpl; rewrite [LHS](proj1 (proj2_sig Sense1_Form_ff_));
          apply: (proj2 (proj2_sig Sense1_Form_ff_)); simpl; reflexivity
    | move; simpl; intros; apply: (proj2 (proj2_sig Sense1_Form_ff'));
      first ( subst; reflexivity ) ;
      simpl; apply: (proj2 (proj2_sig Sense1_Form_ff_));
        first ( subst; reflexivity ); assumption ] ).
Defined.

Definition Sense1_Unit
           (Sense00_Form_F : obGenerator -> Type)
           (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type)
           (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) :
  Sense1_Form_data Sense1_FormParam_F Sense1_FormParam_F (Sense1_Unit_Param Sense01_Param_F)
                     (Sense1_Unit_Param Sense01_Param_F).
Proof.
  intros; unshelve eexists.
  - refine (fun G param => id).
  - abstract (split; move; simpl; intros; [ reflexivity | assumption ]).
Defined.
(** # #
#+END_SRC

** Sense-decodings of morphisms : introduction and elimination for the product-substitution object

#+BEGIN_SRC coq :exports both :results silent # # **)
Definition Sense1_Form_Forget :
forall (Sense00_Form_F : obGenerator -> Type)
(Sense01_Form_F : Sense01_data Sense00_Form_F)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
(Sense00_Param_SubstF : obGenerator -> Type)
(Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
(Sense00_Param_PiSubstF : obGenerator -> Type)
(Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
(Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF),
  Sense1_Form_data (Sense1_FormParam_PiSubst Sense1_FormParam_F Sense1_Param_subst Sense1_Param_proj) Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst .
Proof.
  intros. unshelve eexists.
  - intros G param form . unshelve eexists.
    + refine (sval ( (sval (projT2 (sval form)) G unitGenerator) _ ) ). unshelve eexists.
      * exact: param .
      * abstract (rewrite -[in RHS]Parameter_unitGenerator; rewrite -[in RHS](proj2 (proj2_sig (Sense01_Param_PiSubstF)));
                  symmetry; exact: (proj2_sig form)).
    + abstract (set form_projSec := ( ( (sval (projT2 (sval form)) G unitGenerator) _ ) in LHS );
                            (** TODO: reverse final equation in Sense00_AtParam_ or Sense00_Form_PiSubst such to same side **)
                            rewrite [(sval form_projSec) in LHS](proj2 (proj2_sig (Sense01_Form_F)));
      rewrite -[in LHS](proj2 (proj2_sig Sense01_Form_F)); simpl;
      exact (proj2_sig form_projSec) ).
  - abstract (split; [ move; intros; simpl;
             apply: (proj2_sig (projT2 (sval form))); simpl; last reflexivity;
             rewrite -polyGenerator_unitGenerator -unitGenerator_polyGenerator;  reflexivity
           | move; simpl; intros;
             apply: Sense00_Form_PiSubst_quotientLogical_rev; simpl; assumption ] ).
Defined.

Definition Sense1_Form_Remember :
forall (Sense00_Form_F : obGenerator -> Type)
(Sense01_Form_F : Sense01_data Sense00_Form_F)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
(Sense00_Param_SubstF : obGenerator -> Type)
(Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
(Sense00_Param_PiSubstF : obGenerator -> Type)
(Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
(Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF)
(Sense00_Form_L : obGenerator -> Type)
(Sense01_Form_L : Sense01_data Sense00_Form_L)
(Sense00_Param_L : obGenerator -> Type)
(Sense01_Param_L : Sense01_Param_data Sense00_Param_L)
(Sense1_FormParam_L : Sense1_FormParam_data Sense01_Form_L Sense01_Param_L)
(Sense00_Param_LPiSubstF : obGenerator -> Type)
(Sense01_Param_LPiSubstF : Sense01_Param_data Sense00_Param_LPiSubstF)
(Sense1_Param_LPiSubstF_proj : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_L)
(Sense1_Param_LPiSubstF_subst : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_PiSubstF)
(Sense1_Form_ll : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_F (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst) (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj Sense1_Param_subst Sense1_Param_LPiSubstF_subst)),
Sense1_Form_data Sense1_FormParam_L (Sense1_FormParam_PiSubst Sense1_FormParam_F Sense1_Param_subst Sense1_Param_proj) Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst .
Proof.
  intros. unshelve eexists.
  - intros G param form. unshelve eexists.
    + unshelve eexists.
      * exact: (sval Sense1_Param_LPiSubstF_subst G param) .
      * { unshelve eexists.
          - intros H' h s. unshelve eexists.
            + simple refine (sval (sval Sense1_Form_ll H' _ _ )).
              * exists ((Parameter1 h) o>Parametrizator_[sval Sense01_Param_LPiSubstF ] param).
                exists (sval s).
                abstract (simpl; rewrite -[RHS](proj2_sig Sense1_Param_LPiSubstF_subst );
                  exact: (proj2_sig s)).
              * exists (sval (h o>GeneratorAtParam_[sval (Sense01_AtParam_ Sense1_FormParam_L Sense1_Param_LPiSubstF_proj) ] form)).
                abstract(simpl;  simpl;
                         rewrite -[LHS](proj2_sig Sense1_FormParam_L) -[RHS](proj2_sig Sense1_Param_LPiSubstF_proj);
                         congr ( h o>Generator_ _ ); exact: (proj2_sig form)).
            + abstract (simpl; rewrite [LHS](proj2_sig (sval Sense1_Form_ll _ _ _ )); reflexivity).
          - abstract (simpl; intros; rewrite [LHS](proj1 (proj2_sig Sense1_Form_ll ));
            apply: (proj2 (proj2_sig Sense1_Form_ll )); simpl;
            [ apply: Sense00_Param_Subst_quotientLogical; simpl;
              [ rewrite -Heq_arrow; rewrite Parameter_morphism; exact: (proj1 (proj2_sig Sense01_Param_LPiSubstF))
              | exact: Heq_param ]
            | rewrite -Heq_arrow; exact: (proj1 (proj2_sig Sense01_Form_L)) ] ) .
        }
    + abstract (simpl; reflexivity).
  - abstract (split;
    [ move; simpl; intros; apply: Sense00_Form_PiSubst_quotientLogical_ALT; simpl;
      intros; apply: (proj2 (proj2_sig Sense1_Form_ll )); simpl;
      [ apply: Sense00_Param_Subst_quotientLogical; simpl;
        [ rewrite Parameter_morphism; symmetry;  exact: (proj1 (proj2_sig Sense01_Param_LPiSubstF))
        | assumption ]
      | symmetry; exact: (proj1 (proj2_sig Sense01_Form_L)) ]
    | move; simpl; intros; apply: Sense00_Form_PiSubst_quotientLogical_ALT; simpl;
      intros; apply: (proj2 (proj2_sig Sense1_Form_ll )); simpl;
      [ apply: Sense00_Param_Subst_quotientLogical; simpl;
          [ subst; reflexivity
          | assumption ]
      | congr ( _ o>Generator_ _ );
        assumption ] ] ) .
Defined.
(** # #
#+END_SRC

** Sense-decodings of morphisms : yoneda-embedding form-morphism of generator-arrow

#+BEGIN_SRC coq :exports both :results silent # # **)
Definition Sense1_Param_ViewMor_proj_inFibre :
  forall (G : obGenerator) (P : obParametrizator) (inFibre_P : inFibre G P),
    Sense1_Param_data (Sense01_Param_View (Parameter0 G)) (Sense01_Param_View P).
Proof.
  intros. exact: (Sense1_Param_ViewMor (fst (sval inFibre_P))).
Defined.

Definition Sense1_Form_ViewMor' :
  forall (G : obGenerator) (H : obGenerator) (g : 'Generator( H ~> G )),
    Sense1_Form_data (Sense1_FormParam_View H) (Sense1_FormParam_View G)
                     (Sense1_Param_ViewMor_proj_inFibre (InFibre _))
                  (Sense1_Param_ViewMor (Parameter1 g)) .
Proof.
  intros G H hg. unshelve eexists.
  - intros G0 x h . exists ( (sval h) o>Generator hg ).
    abstract (move: (proj2_sig h); rewrite /Sense1_Param_ViewMor /Sense1_FormParam_View  /= ;
              rewrite Parameter_morphism ; move -> ; do 1 rewrite -unitParametrizator_polyParametrizator; reflexivity).
  - abstract (split; [ move; simpl; intros ; rewrite /Sense01_action /= ; exact: polyGenerator_morphism
                     | move; simpl; intros; congr ( _ o>Generator hg ); assumption] ).
Defined.
(** # #
#+END_SRC

** Sense-decodings of morphisms : Constructing_default form-morphism over Constructing_PParam_default pparameter-morphisms

#+BEGIN_SRC coq :exports both :results silent # # **)
Definition Sense1_Constructing_pseudoCode_PParam_default_proj :
    forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F),
    forall Sense00_Param_D (Sense01_Param_D : Sense01_Param_data Sense00_Param_D),
    forall (Sense1_Param_subst : Sense1_Param_data Sense01_Param_F Sense01_Param_D),
    forall (G : obGenerator) (param : Sense00_Param_D G) (P : obParametrizator) (inFibre_P : inFibre G P),
      Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst param) (Sense01_Param_View P).
Proof.
  intros; exact: (Sense1_LocalParam_proj Sense1_Param_subst param inFibre_P).
Defined.

Definition Sense1_Constructing_pseudoCode_PParam_default_subst :
    forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F),
    forall Sense00_Param_D (Sense01_Param_D : Sense01_Param_data Sense00_Param_D),
    forall (Sense1_Param_subst : Sense1_Param_data Sense01_Param_F Sense01_Param_D),
    forall (G : obGenerator) (param : Sense00_Param_D G),
      Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst param) (Sense01_Param_SumImage Sense1_Param_subst).
Proof.
  unshelve eexists.
  - intros G' paramm. exists ((projT1 paramm) o>Parametrizator_[sval Sense01_Param_D] param).
    { (* logical part *) abstract (exact: (projT2 paramm)). }
  - abstract (move; intros; apply: Sense00_Param_SumImage_quotientLogical; simpl;
              rewrite (proj1 (proj2_sig Sense01_Param_D)); reflexivity).
Defined.

Definition Sense1_Form_Constructing_default :
  forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F),
  forall (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF),
  forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF),
  forall (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF),
  forall (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F),
  forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
 Sense1_Form_data (Sense1_FormParam_View G) (Sense1_FormParam_SumSubst Sense1_FormParam_F Sense1_Param_subst Sense1_Param_proj)
    (Sense1_Constructing_pseudoCode_PParam_default_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
    (Sense1_Constructing_pseudoCode_PParam_default_subst Sense1_Param_subst (sval Sense1_Param_subst G param)).
Proof.
  unshelve eexists.
  - intros H param' g. unshelve eexists.
    + unshelve eexists.
      * exact: ((Parameter1 (sval g)) o>Parametrizator_[sval Sense01_Param_SumSubstF] (sval Sense1_Param_subst G param)).
      * unshelve eexists. exists ((Parameter1 (sval g)) o>Parametrizator_[sval Sense01_Param_SubstF] param).
        abstract (simpl; symmetry; exact: (proj2_sig Sense1_Param_subst)).
        simpl. exact: ((sval g) o>GeneratorAtParam_[sval (Sense01_AtParam_ _ _ )] form).
    + abstract (apply: Sense00_Param_SumImage_quotientLogical; simpl; rewrite [Parameter1 _](proj2_sig g); simpl; do 1 rewrite -unitParametrizator_polyParametrizator; reflexivity).
  - abstract(split; move; simpl; intros;
    [ apply: Sense00_Form_SumSubst_quotientLogical; simpl;
      [ reflexivity
      | rewrite [in RHS]Parameter_morphism; exact: (proj1 (proj2_sig Sense01_Param_SubstF))
      | exact: (proj1 (proj2_sig Sense01_Form_F)) ]
    | apply: Sense00_Form_SumSubst_quotientLogical; simpl;
      [ reflexivity
      | congr ( _ o>Parametrizator_ _); first congr Parameter1; assumption
      | congr ( _ o>Generator_ _); assumption ] ] ) .
Defined.
(** # #
#+END_SRC

** Sense-decodings lemmas : polymorphism/naturality of some family of morphisms

#+BEGIN_SRC coq :exports both :results silent # # **)
Definition Morphism_prop   (**MEMO: THIS SIMILAR AS ASSOCIATIVITY *)
           (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
           (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
           (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
           (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense1_Param_ee : forall (G : obGenerator) (param : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst param) Sense01_Param_E)
  := forall (G G' : obGenerator) (p : 'Parametrizator ( Parameter0 G' ~> Parameter0 G )) (paramlocal : Sense00_Param_SumSubstF G)
       (paramlocal' : Sense00_Param_SumSubstF G') (Heqparamlocal : paramlocal' = p o>Parametrizator_ paramlocal) (H : obGenerator)
       (param' : Sense00_LocalParam_ Sense1_Param_subst paramlocal' H) (param : Sense00_LocalParam_ Sense1_Param_subst paramlocal H),
    param = sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst Heqparamlocal) H param' ->
    sval (Sense1_Param_ee G paramlocal) H param = sval (Sense1_Param_ee G' paramlocal') H param'.

Lemma Morphism_Constructing_PParam_default
     : forall (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
        (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
         (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF),
         Morphism_prop (Sense1_Constructing_pseudoCode_PParam_default_subst Sense1_Param_subst).
Proof.
  intros. move. intros. apply: Sense00_Param_SumImage_quotientLogical; simpl. subst. simpl. rewrite (proj1 (proj2_sig Sense01_Param_SumSubstF)). reflexivity.
Qed.
Arguments Morphism_Constructing_PParam_default [_ _ _ _] _.

  (*TODO: MOVE UP, next to Form_Destructing *)  Lemma Form_morphism_Heq:
   forall (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF) (Sense00_Param_SubstF : obGenerator -> Type)
          (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF) (G G' : obGenerator)
          (g : 'Generator( G' ~> G )) (param : Sense00_Param_SubstF G) (G'' : obGenerator)
          (paramlocal : Sense00_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G' (Parameter1 g o>Parametrizator_ param)) G'')
          (paramlocal' : Sense00_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G param) G''
           := sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst (eq_sym (proj2_sig Sense1_Param_subst G G' (Parameter1 g) param))) G'' paramlocal),
     sval (Sense1_Param_Compos (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G' (Parameter1 g o>Parametrizator_[sval Sense01_Param_SubstF] param)) (InFibre G')) (Sense1_Param_ViewMor (Parameter1 g))) G''
          paramlocal = sval (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G)) G'' paramlocal'.
 Proof.
   intros. simpl.  do 2 rewrite -unitParametrizator_polyParametrizator; reflexivity.
   Qed.

Definition Morphism_Form_prop
 (Sense00_Form_F : obGenerator -> Type)
  (Sense01_Form_F : Sense01_data Sense00_Form_F)
  (Sense00_Param_F : obGenerator -> Type)
  (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
  (Sense00_Param_SumSubstF : obGenerator -> Type)
  (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
  (Sense00_Param_SubstF : obGenerator -> Type)
  (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
  (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
  (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
  (Sense00_Param_K : obGenerator -> Type)
  (Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
  (Sense1_Param_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G),
                       Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param -> Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G param)) Sense01_Param_K)
  (Sense00_Form_K : obGenerator -> Type)
  (Sense01_Form_K : Sense01_data Sense00_Form_K)
  (Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)
  (Sense1_Form_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
                      Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                        (Sense1_Param_ee__ G param form)) :=
 forall (G G' : obGenerator) (g : 'Generator( G' ~> G )) (param : Sense00_Param_SubstF G)
   (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
 forall (G'' : obGenerator) (paramm : Sense00_LocalParam_ Sense1_Param_subst
    (sval Sense1_Param_subst G' ((Parameter1 g) o>Parametrizator_[sval Sense01_Param_SubstF] param)) G'')
   (formm : 'Generator ( G'' ~> G' @_ Sense1_LocalParam_proj Sense1_Param_subst
    (sval Sense1_Param_subst G' ((Parameter1 g) o>Parametrizator_[sval Sense01_Param_SubstF] param)) (InFibre G') <| paramm )),
 forall (paramm' : Sense00_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G param) G''
    := sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst (eq_sym ((proj2_sig Sense1_Param_subst) _ _ _ _))) _ paramm )
   (formm' : 'Generator ( G'' ~> G @_ Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G) <| paramm' )
    := (Sense01_AtParam_transp'' (Form_morphism_Heq paramm) (formm o>GeneratorAtParam g)) ),
   sval (sval (Sense1_Form_ee__ G param form) G'' (paramm') (formm')) =
   sval (sval (Sense1_Form_ee__ G' ((Parameter1 g) o>Parametrizator_[sval Sense01_Param_SubstF] param)
                               (g o>GeneratorAtParam_[sval (Sense01_AtParam_(Sense1_FormParam_F) _)] form))
              G'' paramm formm).

Lemma Morphism_Constructing_default
  : forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
      (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (Sense00_Param_SumSubstF : obGenerator -> Type)
      (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF),
    forall (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
      (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF),
    forall Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F,
      Morphism_Form_prop (Sense1_FormParam_F:=Sense1_FormParam_F)
                         (Sense1_Form_Constructing_default Sense1_Param_subst (Sense1_Param_proj:=Sense1_Param_proj)).
Proof.
  intros; move; intros; apply: Sense00_Form_SumSubst_quotientLogical; simpl.
  - reflexivity.
  - rewrite Parameter_morphism. rewrite (proj1 (proj2_sig Sense01_Param_SubstF)). reflexivity.
  - rewrite (proj1 (proj2_sig Sense01_Form_F)). reflexivity.
Qed.
Arguments Morphism_Constructing_default [_ _ _ _] _ [_ _ _ _] _ _.
(** # #
#+END_SRC

** Sense-decodings of morphisms : Destructing_default form-morphism over Destructing_PParam_default pparameter-morphisms

#+BEGIN_SRC coq :exports both :results silent # # **)
Definition Sense1_Destructing_pseudoCode_PParam_default_proj' :
forall (Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense00_Param_D : obGenerator -> Type)
(Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_F Sense01_Param_D),
Sense1_Param_data (Sense01_Param_Sum Sense1_Param_subst) (Sense01_Param_SumImage Sense1_Param_subst).
Proof.
  unshelve eexists.
  - intros G paramm. exists (projT1 paramm).
    { (* logical part *) abstract (exact: (projT2 paramm)). }
  - abstract (move; intros; apply: Sense00_Param_SumImage_quotientLogical; simpl; reflexivity).
Defined.

(**TODO: lemma Sense01_Form_SumSubst -> Sense01_LocalParam_ *)
Definition Sense1_Destructing_pseudoCode_PParam_default_subst' :
forall (Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense00_Param_D : obGenerator -> Type)
(Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_F Sense01_Param_D)
(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense1_Param_ee : forall (G : obGenerator) (paramlocal : Sense00_Param_D G),
     Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_E)
(Sense1_Param_ee_morphism :  forall (G G' : obGenerator) (p : 'Parametrizator ( Parameter0 G' ~> Parameter0 G )),
    forall paramlocal paramlocal' (Heqparamlocal : paramlocal' = (p o>Parametrizator_ paramlocal)),
    forall H param' param, param = sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst Heqparamlocal) _ param' ->
  sval (Sense1_Param_ee G paramlocal) H param =
  sval (Sense1_Param_ee G' paramlocal') H param' ),
Sense1_Param_data (Sense01_Param_Sum Sense1_Param_subst) Sense01_Param_E.
Proof.
  intros.   unshelve eexists.
  - intros G f_d. refine (sval (Sense1_Param_ee G  (projT1 f_d)) _ _ ).
    exists unitParametrizator . apply: Sense01_Param_AtParam_transp; last (by  exact (projT2 f_d));
                             abstract(exact:(proj2 (proj2_sig Sense01_Param_D))).
  - abstract (move; simpl; intros; rewrite (proj2_sig (Sense1_Param_ee _  _)); simpl;
              apply Sense1_Param_ee_morphism with (Heqparamlocal:= eq_refl);
              simpl; apply: Sense00_LocalParam_quotientLogical ; simpl;
              rewrite -polyParametrizator_unitParametrizator; rewrite [RHS]unitParametrizator_polyParametrizator; reflexivity) .
Defined.

Definition Sense1_Destructing_pseudoCode_PParam_default_proj :
forall (Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense00_Param_D : obGenerator -> Type)
(Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_F Sense01_Param_D)
(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense1_Param_ee : forall (G : obGenerator) (paramlocal : Sense00_Param_D G),
     Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_E)
(Sense1_Param_ee_morphism :  forall (G G' : obGenerator) (p : 'Parametrizator ( Parameter0 G' ~> Parameter0 G )),
    forall paramlocal paramlocal' (Heqparamlocal : paramlocal' = (p o>Parametrizator_ paramlocal)),
    forall H param' param, param = sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst Heqparamlocal) _ param' ->
  sval (Sense1_Param_ee G paramlocal) H param =
  sval (Sense1_Param_ee G' paramlocal') H param' )
(Sense00_Param_EE' : obGenerator -> Type) (Sense01_Param_EE' : Sense01_Param_data Sense00_Param_EE')
(Sense1_Param_proj_ee' : Sense1_Param_data Sense01_Param_EE' Sense01_Param_E),
Sense1_Param_data (Sense01_Param_Subst Sense1_Param_proj_ee' (Sense1_Destructing_pseudoCode_PParam_default_subst' Sense1_Param_ee_morphism)) (Sense01_Param_SumImage Sense1_Param_subst).
Proof.
  intros. exact (Sense1_Compos_pseudoCode_PParam_proj (* viewedfunctor ( _ ) *)Sense1_Param_proj_ee' (Sense1_Destructing_pseudoCode_PParam_default_proj' Sense1_Param_subst)
                                                                  (Sense1_Destructing_pseudoCode_PParam_default_subst' Sense1_Param_ee_morphism)).
Defined.

Definition Sense1_Destructing_pseudoCode_PParam_default_subst :
forall (Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense00_Param_D : obGenerator -> Type)
(Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_F Sense01_Param_D)
(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense1_Param_ee : forall (G : obGenerator) (paramlocal : Sense00_Param_D G),
     Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_E)
(Sense1_Param_ee_morphism :  forall (G G' : obGenerator) (p : 'Parametrizator ( Parameter0 G' ~> Parameter0 G )),
    forall paramlocal paramlocal' (Heqparamlocal : paramlocal' = (p o>Parametrizator_ paramlocal)),
    forall H param' param, param = sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst Heqparamlocal) _ param' ->
  sval (Sense1_Param_ee G paramlocal) H param =
  sval (Sense1_Param_ee G' paramlocal') H param' )
(Sense00_Param_E' : obGenerator -> Type) (Sense01_Param_E' : Sense01_Param_data Sense00_Param_E')
(Sense00_Param_EE' : obGenerator -> Type) (Sense01_Param_EE' : Sense01_Param_data Sense00_Param_EE')
(Sense1_Param_proj_ee' : Sense1_Param_data Sense01_Param_EE' Sense01_Param_E)
(Sense1_Param_subst_ee' : Sense1_Param_data Sense01_Param_EE' Sense01_Param_E'),
  Sense1_Param_data (Sense01_Param_Subst Sense1_Param_proj_ee' (Sense1_Destructing_pseudoCode_PParam_default_subst' Sense1_Param_ee_morphism)) Sense01_Param_E'.
Proof.
  intros. exact (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee' Sense1_Param_subst_ee'
                                                                  (Sense1_Destructing_pseudoCode_PParam_default_subst' Sense1_Param_ee_morphism) ).
Defined.

Definition Sense1_Param_Destructing_default_quotientLogical :
forall (Sense00_Param_SumSubstF : obGenerator -> Type)
(Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
(Sense00_Param_SubstF : obGenerator -> Type)
(Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense1_Param_ee : forall (G : obGenerator) (param : Sense00_Param_SumSubstF G),
    Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst param) Sense01_Param_E),

   forall (G : obGenerator) (paramlocal paramlocal' : Sense00_Param_SumSubstF G) (H : obGenerator)
     (param : Sense00_LocalParam_ Sense1_Param_subst paramlocal H)
     (param' : Sense00_LocalParam_ Sense1_Param_subst paramlocal' H)
     (Heqparamlocal : paramlocal = paramlocal') (Heqparam : projT1 param = projT1 param'),
     sval (Sense1_Param_ee G paramlocal) H param =
     sval (Sense1_Param_ee G paramlocal') H param' .
Proof.
  intros. subst.
  have Heqparam' :  param =  param'. apply: Sense00_LocalParam_quotientLogical. assumption.
  subst. reflexivity.
Qed.

Definition Sense1_Form_Destructing_default_quotientLogical :
forall (Sense00_Form_F : obGenerator -> Type)
(Sense01_Form_F : Sense01_data Sense00_Form_F)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
(Sense00_Param_SumSubstF : obGenerator -> Type)
(Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
(Sense00_Param_SubstF : obGenerator -> Type)
(Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
(Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
(Sense00_Form_E : obGenerator -> Type)
(Sense01_Form_E : Sense01_data Sense00_Form_E)
(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(Sense1_Param_ee :
forall (G : obGenerator) (param : Sense00_Param_SubstF G),
  Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param ->
  Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G param)) Sense01_Param_E)
(Sense1_Form_ee :
   forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
     Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_E
                       (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                       (Sense1_Param_ee G param form)),

forall G (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
  (param' : Sense00_Param_SubstF G) (form' : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param'),
forall (Heqparam : param = param') (Heqform : sval form = sval form'),
forall (G0 : obGenerator) (paramm : Sense00_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G param) G0)
  (formm : 'Generator ( G0 ~> G @_ Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G) <| paramm ))
  (paramm' : Sense00_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G param') G0)
  (formm' : 'Generator ( G0 ~> G @_ Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param') (InFibre G) <| paramm' )),
forall (Heqparamm : projT1 paramm = projT1 paramm') (Heqformm : sval formm = sval formm'),
  sval (sval (Sense1_Form_ee G param form) G0 paramm formm) =
  sval (sval (Sense1_Form_ee G param' form') G0 paramm' formm').
Proof.
  intros. subst.
  have Heqform' : form = form'. apply: Sense00_AtParam_quotientLogical. assumption.
  subst.
  have Heqparamm' :  paramm =  paramm'. apply: Sense00_LocalParam_quotientLogical. assumption.
  subst.
  have Heqformm' : formm =  formm'.  apply: Sense00_AtParam_quotientLogical. assumption.
  subst. reflexivity.
Qed.

Definition Sense1_Form_Destructing_default :
forall (Sense00_Form_F : obGenerator -> Type)
(Sense01_Form_F : Sense01_data Sense00_Form_F)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
(Sense00_Param_SumSubstF : obGenerator -> Type)
(Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
(Sense00_Param_SubstF : obGenerator -> Type)
(Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
(Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
(Sense00_Form_E : obGenerator -> Type)
(Sense01_Form_E : Sense01_data Sense00_Form_E)
(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(Sense1_Param_ee0 : forall (G : obGenerator) (param : Sense00_Param_SumSubstF G),
    Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst param) Sense01_Param_E)
(Sense1_Param_ee0_morphism : Morphism_prop Sense1_Param_ee0)
(Sense1_Form_ee :
   forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
     Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_E
                       (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                       (Sense1_Param_ee0 G (sval Sense1_Param_subst G param)))
 (Sense1_Form_ee_morphism : Morphism_Form_prop Sense1_Form_ee) ,
  Sense1_Form_data (Sense1_FormParam_SumSubst Sense1_FormParam_F Sense1_Param_subst Sense1_Param_proj) Sense1_FormParam_E
                    (Sense1_Destructing_pseudoCode_PParam_default_proj' Sense1_Param_subst)
                    (Sense1_Destructing_pseudoCode_PParam_default_subst' Sense1_Param_ee0_morphism).
(** *)
Proof.
  intros. unshelve eexists.
  - intros G paramsum paramlocal_form.
    have lemma1: (projT1 paramsum) = (sval Sense1_Param_subst G (sval (projT1 (projT2 (sval paramlocal_form)))))
      by abstract(rewrite [RHS](proj2_sig (projT1 (projT2 (sval paramlocal_form)))); simpl;
                  rewrite [RHS](f_equal (@projT1 _ _) (proj2_sig paramlocal_form)); reflexivity).
    unshelve eexists.
    + unshelve refine (sval (sval (Sense1_Form_ee G (sval (projT1 (projT2 (sval paramlocal_form)))) (projT2 (projT2 (sval paramlocal_form)))) G _ _)).
      * apply: Sense00_LocalParam_of_Sense00_Param_AtParam_ .
        apply: Sense01_Param_AtParam_transp; last (by  exact (projT2 paramsum)); exact: lemma1.
      * simpl; exists unitGenerator.
        abstract(simpl; do 1 rewrite -unitParametrizator_polyParametrizator; rewrite -Parameter_unitGenerator; reflexivity).
    + Time abstract(simpl; rewrite [LHS](proj2_sig (sval (Sense1_Form_ee _ _ _) _ _ _));
        apply: (Sense1_Param_Destructing_default_quotientLogical Sense1_Param_ee0); first (by symmetry; exact: lemma1); reflexivity) .
  - Time abstract ( split;
           [ move; simpl; intros G paramsum G' g paramlocal_form;
             rewrite [LHS](proj1 (proj2_sig (Sense1_Form_ee G _ _))) /= ; rewrite -[RHS]Sense1_Form_ee_morphism;
             apply: (Sense1_Form_Destructing_default_quotientLogical Sense1_Form_ee);
             [ reflexivity | reflexivity
               | congr (projT1 _); apply: Sense00_LocalParam_quotientLogical;
                 simpl; rewrite -[RHS]polyParametrizator_unitParametrizator -[LHS]unitParametrizator_polyParametrizator; reflexivity
               | simpl; rewrite -[RHS]polyGenerator_unitGenerator; symmetry; exact:unitGenerator_polyGenerator ]
           | move; simpl; intros G paramsum paramlocal_form paramsum' paramlocal_form' Heqparamsum Heqparamlocal_form;
             apply: (Sense1_Form_Destructing_default_quotientLogical Sense1_Form_ee);
             [ rewrite Heqparamlocal_form; reflexivity
             | rewrite Heqparamlocal_form; reflexivity
             | reflexivity
             | reflexivity ] ] ) . (* 14 secs *)
Defined.
(** # #
#+END_SRC

** Interface for pseudocodes of the finitely-presented/compact dataobjects , and example for the binary-dataobject

#+BEGIN_SRC coq :exports both :results silent # # **)
Module Export Finiteness.

Definition Sense00_Param_Binary : obGenerator -> Type := fun _ => bool .
Definition Sense01_Param_Binary : Sense01_Param_data Sense00_Param_Binary.
Proof.
  exists (fun _ _ _ => id). abstract (split; reflexivity).
Defined.

Definition Sense01_Form_Binary := (Sense01_data_of_Sense01_Param_data Sense01_Param_Binary).
Definition Sense1_FormParam_Binary : Sense1_FormParam_data Sense01_Form_Binary Sense01_Param_Binary := (Sense1_FormParam_Id  Sense01_Param_Binary).
Definition Sense01_Param_SubstBinary := Sense01_Param_Binary.
Definition Sense01_Param_SumSubstBinary := Sense01_Param_Binary.
Definition Sense1_Param_subst_Binary : Sense1_Param_data Sense01_Param_SubstBinary Sense01_Param_SumSubstBinary := (Sense1_Param_Id Sense01_Param_Binary).
Definition Sense1_Param_proj_Binary : Sense1_Param_data Sense01_Param_SubstBinary Sense01_Param_Binary  := (Sense1_Param_Id Sense01_Param_Binary).
Definition true_Binary : forall (G : obGenerator), Sense00_Param_Binary G := fun _ => true.
Definition false_Binary : forall (G : obGenerator), Sense00_Param_Binary G := fun _ => false.
Definition Sense1_Param_subst_invert : Sense1_Param_data (Sense01_Param_SumImage Sense1_Param_subst_Binary)
                                                           (Sense01_Param_SumImage Sense1_Param_subst_Binary).
Proof.
  unshelve eexists.
  intros G param. exists (negb (projT1 param)). exists (negb (sval (projT2 param))).
  abstract (congr (negb _); exact: (proj2_sig (projT2 param))).
  abstract (move; intros; apply: Sense00_Param_SumImage_quotientLogical; simpl; reflexivity).
Defined.
Definition true_Binary_Form : forall (G : obGenerator),  Sense00_AtParam_ Sense1_FormParam_Binary Sense1_Param_proj_Binary (true_Binary G) .
Proof.
  intros ?. exists true. abstract (reflexivity).
Defined.
Definition false_Binary_Form : forall (G : obGenerator),  Sense00_AtParam_ Sense1_FormParam_Binary Sense1_Param_proj_Binary (false_Binary G) .
Proof.
  intros ?. exists false. abstract (reflexivity).
Defined.

Inductive obCoMod_Param_Data :
  forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF), Type :=

| Binary : obCoMod_Param_Data Sense1_Param_subst_Binary.

Inductive obCoMod_Data :
  forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst), Type :=

| Binary_Form : obCoMod_Data Sense1_FormParam_Binary Sense1_Param_proj_Binary Binary .

(*MEMO: later , [Inductive congrPseudoCode] shall depend on these constructel_Param , so move these above *)
Parameter inFibreDefault_Constructel_Param : forall (G : obGenerator),
  forall (P : obParametrizator) (inFibre_P : inFibre G P), Type.

Parameter Unit_inFibreDefault_Constructel_Param :
  forall (G : obGenerator), inFibreDefault_Constructel_Param (InFibre G) .

Parameter viewingDefault_Constructel_Param : forall (G' : obGenerator),
  forall (P : obParametrizator)  (p : 'Parametrizator( Parameter0 G' ~> P ))
    (P' : obParametrizator) (inFibre_P' : inFibre G' P')
    (cons_inFibre_P' : inFibreDefault_Constructel_Param inFibre_P'), Type.

Parameter viewingDefault_Constructel_Param_action :
  forall (Q : obParametrizator) (G : obGenerator) (p : 'Parametrizator(  Parameter0 G ~> Q )) (P : obParametrizator) (inFibre_P : inFibre G P)
    (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
    (pp : viewingDefault_Constructel_Param p cons_inFibre_P),
  forall  (G' : obGenerator) (p' : 'Parametrizator(  Parameter0 G' ~> P )) (P' : obParametrizator) (inFibre_P' : inFibre G' P')
     (cons_inFibre_P' : inFibreDefault_Constructel_Param inFibre_P')
     (p'p' : viewingDefault_Constructel_Param p' cons_inFibre_P'),
    viewingDefault_Constructel_Param ((inFibre_transp_codom inFibre_P p') o>Parametrizator p) cons_inFibre_P' .

Parameter GBinary : obGenerator. (*or G_Top *)

Parameter Unit_viewingDefault_Constructel_Param_Binary :
  viewingDefault_Constructel_Param (@unitParametrizator (Parameter0 GBinary)) (Unit_inFibreDefault_Constructel_Param GBinary) .

Inductive viewingDefault_Constructel_Param_codomBinary :
  forall (G : obGenerator)(p : 'Parametrizator(  Parameter0 G ~> (Parameter0 GBinary) ))
    P (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
  (pp : viewingDefault_Constructel_Param p cons_inFibre_P), Type :=
| Unit_viewingDefault_Constructel_Param_codomBinary :
    viewingDefault_Constructel_Param_codomBinary (Unit_viewingDefault_Constructel_Param_Binary).

Axiom viewingDefault_Constructel_Param_codomBinary_prop :
  forall (G : obGenerator) (p : 'Parametrizator(  Parameter0 G ~> (Parameter0 GBinary) ))
    P (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
    (pp : viewingDefault_Constructel_Param p cons_inFibre_P),
    viewingDefault_Constructel_Param_codomBinary pp .

Parameter constructel_Param :
forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF: obCoMod_Param_Data Sense1_Param_subst),
forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G) (P : obParametrizator) (inFibre_P : inFibre G P)
  (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P), Type.

Parameter constructel_Param_action :
forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF: obCoMod_Param_Data Sense1_Param_subst),

forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),

forall (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
  (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ) ,

forall (G' : obGenerator) (p' : 'Parametrizator( Parameter0 G' ~> P)) (P' : obParametrizator) (inFibre_P' : inFibre G' P')
  (cons_inFibre_P' : inFibreDefault_Constructel_Param inFibre_P')
  (p'p' : viewingDefault_Constructel_Param p' cons_inFibre_P' ),
  forall paramlocal' (Heq_paramlocal : ( (inFibre_transp_codom inFibre_P p') o>Parametrizator_[sval Sense01_Param_SumSubstF] paramlocal) = paramlocal'),
    constructel_Param Param_SubstF paramlocal' cons_inFibre_P' .

Parameter True_Binary :
  forall (G : obGenerator) (p : 'Parametrizator( Parameter0 G ~> Parameter0 GBinary (* Parameter0 G ~> _ | Viewing_Binary *) ))
    (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
    (pp : viewingDefault_Constructel_Param p cons_inFibre_P),
    (* enough for these arguments to be unit/reflexivity because of Sense1_Param_ee_morphism ..NOPE THERE IS MORE :
                 in fact this is quantified over some finitely-presented/compact geometry viewing (which by def accept action) Viewing_Binary (given functor, not the all 'Parametrizator) ,
                 SO THAT THE MANNER OF DESTRUCTION/ELIMINATION WILL BE GEOMETRIC !  *)

    constructel_Param Binary ( p o>Parametrizator_[sval Sense01_Param_Binary] (true_Binary GBinary)) cons_inFibre_P .

Parameter False_Binary :
  forall (G : obGenerator) (p : 'Parametrizator( Parameter0 G ~> Parameter0 GBinary (* Parameter0 G ~> _ | Viewing_Binary *) ))
    (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
    (pp : viewingDefault_Constructel_Param p cons_inFibre_P),
    constructel_Param Binary ( p o>Parametrizator_[sval Sense01_Param_Binary] (false_Binary GBinary)) cons_inFibre_P .

Module Constructel_Param_dataBinary.
Inductive constructel_Param :
forall (G : obGenerator) (paramlocal : Sense00_Param_Binary G) (P : obParametrizator) (inFibre_P : inFibre G P)
  (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
  (cons_paramlocal : Finiteness.constructel_Param Binary paramlocal cons_inFibre_P), Type :=
| True_Binary :
  forall (G : obGenerator) (p : 'Parametrizator( Parameter0 G ~> Parameter0 GBinary (* Parameter0 G ~> _ | Viewing_Binary *) ))
    (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
    (pp : viewingDefault_Constructel_Param p cons_inFibre_P),
    constructel_Param (True_Binary pp)
| False_Binary :
  forall (G : obGenerator) (p : 'Parametrizator( Parameter0 G ~> Parameter0 GBinary (* Parameter0 G ~> _ | Viewing_Binary *) ))
    (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
    (pp : viewingDefault_Constructel_Param p cons_inFibre_P),
    constructel_Param (False_Binary pp).
End Constructel_Param_dataBinary.

Parameter constructel_Param_dataBinary_prop :
  forall (G : obGenerator) (paramlocal : Sense00_Param_Binary G) (P : obParametrizator) (inFibre_P : inFibre G P)
    (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
    (cons_paramlocal : Finiteness.constructel_Param Binary paramlocal cons_inFibre_P),
    Constructel_Param_dataBinary.constructel_Param cons_paramlocal.

Module Constructel_Param_dataTrue.
Inductive constructel_Param :
  forall (cons_paramlocal : Finiteness.constructel_Param Binary true (Unit_inFibreDefault_Constructel_Param GBinary)), Type :=
| True_Binary :
      constructel_Param (True_Binary Unit_viewingDefault_Constructel_Param_Binary).
End Constructel_Param_dataTrue.

Module Constructel_Param_dataFalse.
 Inductive constructel_Param :
 forall (cons_paramlocal : Finiteness.constructel_Param Binary false (Unit_inFibreDefault_Constructel_Param GBinary)), Type :=
| False_Binary :
      constructel_Param (False_Binary Unit_viewingDefault_Constructel_Param_Binary).
End Constructel_Param_dataFalse.

Parameter constructel_Param_dataTrueFalse_prop :
forall (paramlocal : Sense00_Param_Binary GBinary)
  (cons_paramlocal : Finiteness.constructel_Param Binary paramlocal (Unit_inFibreDefault_Constructel_Param GBinary)),
  ltac: (destruct paramlocal;
           [ refine (Constructel_Param_dataTrue.constructel_Param cons_paramlocal)
           | refine (Constructel_Param_dataFalse.constructel_Param cons_paramlocal)] ) .

Parameter viewingDefault_Constructel_Param_Form :
  forall (G' G : obGenerator) (p : 'Generator(  G ~>  G' (*  G ~> _ | Viewing_Default *) )),Type .

(**MEMO: shall this be carried by [viewingDefault_Constructel_Param_Form] ?  *)
Parameter viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form :
  forall (G G' : obGenerator) (g : 'Generator( G' ~> G )) (gg : viewingDefault_Constructel_Param_Form g),
viewingDefault_Constructel_Param (Parameter1 g) (Unit_inFibreDefault_Constructel_Param G').

Parameter viewingDefault_Constructel_Param_Form_action :
    forall (G H : obGenerator) (g : 'Generator( G ~> H )) (gg : viewingDefault_Constructel_Param_Form g),
    forall (G' : obGenerator) (g' : 'Generator( G' ~> G )) (g'g' : viewingDefault_Constructel_Param_Form g'),
viewingDefault_Constructel_Param_Form (g' o>Generator g).

Parameter Unit_viewingDefault_Constructel_Param_Form_Binary : viewingDefault_Constructel_Param_Form (@unitGenerator GBinary) .

Inductive viewingDefault_Constructel_Param_Form_codomBinary :
  forall (G : obGenerator) (g : 'Generator( G ~> GBinary ))
    (gg : viewingDefault_Constructel_Param_Form g), Type :=
| Unit_viewingDefault_Constructel_Param_Form_codomBinary :
    viewingDefault_Constructel_Param_Form_codomBinary (Unit_viewingDefault_Constructel_Param_Form_Binary).

Axiom viewingDefault_Constructel_Param_Form_codomBinary_prop :
 forall (G : obGenerator) (g : 'Generator( G ~> GBinary ))
   (gg : viewingDefault_Constructel_Param_Form g), viewingDefault_Constructel_Param_Form_codomBinary gg.

Parameter constructel_Form :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),
forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param), Type .

Parameter constructel_Form_action :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

forall (G : obGenerator) (param : Sense00_Param_SubstF G) (* (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param)) *),
forall (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param) (cons_form : constructel_Form F  form (*cons_paramlocal *)),

forall (G' : obGenerator) (g : 'Generator( G' ~> G )) (gg : viewingDefault_Constructel_Param_Form g),

  constructel_Form F (g o>GeneratorAtParam_[sval (Sense01_AtParam_( Sense1_FormParam_F)  Sense1_Param_proj  ) ] form ) .

Parameter True_Binary_Form : forall (G' : obGenerator) (g : 'Generator( G' ~> GBinary ))
                       (gg : viewingDefault_Constructel_Param_Form g) ,
      constructel_Form Binary_Form (g o>GeneratorAtParam_[sval (Sense01_AtParam_( Sense1_FormParam_Binary)  Sense1_Param_proj_Binary  ) ] (true_Binary_Form GBinary)) .
Parameter False_Binary_Form : forall (G' : obGenerator) (g : 'Generator( G' ~> GBinary ))
                       (gg : viewingDefault_Constructel_Param_Form g) ,
      constructel_Form Binary_Form (g o>GeneratorAtParam_[sval (Sense01_AtParam_( Sense1_FormParam_Binary)  Sense1_Param_proj_Binary  ) ] (false_Binary_Form GBinary))  .

Module Constructel_Param_Form_dataBinary.
Inductive constructel_Form :
  forall (G : obGenerator) (param : Sense00_Param_Binary G),
  forall form : Sense00_AtParam_ Sense1_FormParam_Binary Sense1_Param_proj_Binary param,
  forall (cons_form : Finiteness.constructel_Form Binary_Form form), Type :=

| True_Binary_Form : forall (G' : obGenerator) (g : 'Generator( G' ~> GBinary ))
                       (gg : viewingDefault_Constructel_Param_Form g) ,
      constructel_Form  ( True_Binary_Form gg )
| False_Binary_Form : forall (G' : obGenerator) (g : 'Generator( G' ~> GBinary ))
                       (gg : viewingDefault_Constructel_Param_Form g) ,
      constructel_Form  ( False_Binary_Form gg) .
End Constructel_Param_Form_dataBinary.

Parameter constructel_Form_dataBinary_prop :
forall (G : obGenerator) (param : Sense00_Param_Binary G),
  forall form : Sense00_AtParam_ Sense1_FormParam_Binary Sense1_Param_proj_Binary param,
  forall (cons_form : Finiteness.constructel_Form Binary_Form form),
  Constructel_Param_Form_dataBinary.constructel_Form cons_form .

Lemma constructel_Form_action_transp_Heq :
  forall  (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF) ,
  forall (G : obGenerator) (param : Sense00_Param_SubstF G),
  forall (G' : obGenerator) (g : 'Generator( G' ~> G )),
    inFibre_transp_codom (InFibre G) (Parameter1 g) o>Parametrizator_[sval Sense01_Param_SumSubstF ] sval Sense1_Param_subst G param = sval Sense1_Param_subst G' (Parameter1 g o>Parametrizator_[sval Sense01_Param_SubstF] param) .
Proof.
  intros. rewrite -[RHS](proj2_sig  Sense1_Param_subst). rewrite -[LHS](proj1 (proj2_sig Sense01_Param_SumSubstF )) .
  congr ( _ o>Parametrizator_ _ ). rewrite -[LHS](proj2 (proj2_sig Sense01_Param_SumSubstF )) .   reflexivity.
Qed.

Lemma test_cases_gradeCoMod_PParam :
  forall (G : obGenerator) (paramlocal : Sense00_Param_Binary G) (P : obParametrizator) (inFibre_P : inFibre G P)
    (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
    (cons_paramlocal : constructel_Param Binary paramlocal cons_inFibre_P) ,
    cons_paramlocal = cons_paramlocal .
Proof.
  intros; destruct (constructel_Param_dataBinary_prop cons_paramlocal) as [ ? ? ? ? ? pp | ? ? ? ? ? pp ] .
  destruct (viewingDefault_Constructel_Param_codomBinary_prop pp).
Abort.

Lemma test_cases_gradeCoMod :
  forall (G : obGenerator) (param : Sense00_Param_Binary G),
  forall (cons_paramlocal : constructel_Param Binary (sval Sense1_Param_subst_Binary G param) (Unit_inFibreDefault_Constructel_Param G)),
  forall form : Sense00_AtParam_ Sense1_FormParam_Binary Sense1_Param_proj_Binary param,
  forall (cons_form : constructel_Form Binary_Form form),
    (cons_paramlocal , cons_form) = (cons_paramlocal , cons_form) .
Proof.
  intros; destruct (constructel_Form_dataBinary_prop cons_form) as [? ? gg | ? ? gg].
  destruct (viewingDefault_Constructel_Param_Form_codomBinary_prop gg).
  destruct (constructel_Param_dataTrueFalse_prop cons_paramlocal).
Abort.
End Finiteness.
(** # #
#+END_SRC

** Pseudocodes of the morphisms

#+BEGIN_SRC coq :exports both :results silent # # **)

(**
TODO: change to maximally inserted implicit Forget_pseudoCode {Sense1_FormParam_F}
 *)
Inductive pseudoCode
    : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
        (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E),
      forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
        (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F),
      forall (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
        (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F),
        Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff -> Type :=

| AtMember_Form :
forall (Sense00_Form_F : obGenerator -> Type)
  (Sense01_Form_F : Sense01_data Sense00_Form_F)
  (Sense00_Param_F : obGenerator -> Type)
  (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
  (Sense00_Param_SubstF : obGenerator -> Type)
  (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
  (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
  (Sense00_Param_SumSubstF : obGenerator -> Type)
  (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
  (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
  (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
  (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),
forall(Sense00_Param_K : obGenerator -> Type)
  (Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
  (Sense1_Param_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
      Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G param)) Sense01_Param_K)
  (Sense00_Form_K : obGenerator -> Type)
  (Sense01_Form_K : Sense01_data Sense00_Form_K)
  (Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)
  (Sense1_Form_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
                      Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                        (Sense1_Param_ee__ G param form))
  (Sense1_Form_ee_morphism : Morphism_Form_prop Sense1_Form_ee__)
  (Form_ee : pseudoCode_Family Sense1_Form_ee_morphism),

    forall (G : obGenerator) (param : Sense00_Param_SubstF G)
  (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
  (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
  (cons_form : constructel_Form F  form),
      pseudoCode (Sense1_Form_ee__ G param form)

| Compos_pseudoCode : forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type)
                  (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
                  (Sense00_Form_F' : obGenerator -> Type) (Sense01_Form_F' : Sense01_data Sense00_Form_F') (Sense00_Param_F' : obGenerator -> Type)
                  (Sense01_Param_F' : Sense01_Param_data Sense00_Param_F') (Sense1_FormParam_F' : Sense1_FormParam_data Sense01_Form_F' Sense01_Param_F')
                  (Sense00_Param_F'F : obGenerator -> Type) (Sense01_Param_F'F : Sense01_Param_data Sense00_Param_F'F) (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F')
                  (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F) (PParam_F'F : pseudoCode_PParam Sense1_Param_proj_ff' Sense1_Param_subst_ff')
                  (Sense1_Form_ff' : Sense1_Form_data Sense1_FormParam_F' Sense1_FormParam_F Sense1_Param_proj_ff' Sense1_Param_subst_ff'),
                pseudoCode Sense1_Form_ff' ->
                forall (Sense00_Form_F'' : obGenerator -> Type) (Sense01_Form_F'' : Sense01_data Sense00_Form_F'') (Sense00_Param_F'' : obGenerator -> Type)
                  (Sense01_Param_F'' : Sense01_Param_data Sense00_Param_F'') (Sense1_FormParam_F'' : Sense1_FormParam_data Sense01_Form_F'' Sense01_Param_F'')
                  (Sense00_Param_F''F' : obGenerator -> Type) (Sense01_Param_F''F' : Sense01_Param_data Sense00_Param_F''F')
                  (Sense1_Param_proj_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F'') (Sense1_Param_subst_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F')
                  (PParam_F''F' : pseudoCode_PParam Sense1_Param_proj_ff_ Sense1_Param_subst_ff_)
                  (Sense1_Form_ff_ : Sense1_Form_data Sense1_FormParam_F'' Sense1_FormParam_F' Sense1_Param_proj_ff_ Sense1_Param_subst_ff_),
                pseudoCode Sense1_Form_ff_  -> pseudoCode ( Sense1_Form_Compos Sense1_Form_ff' Sense1_Form_ff_ )

| Unit_pseudoCode : forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type)
                  (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F),
                pseudoCode ( Sense1_Unit Sense1_FormParam_F )

| ViewMor_pseudoCode : forall (G H : obGenerator) (g : 'Generator( G ~> H (** | H_Viewing ... only the viewing elements*)))
            (gg : viewingDefault_Constructel_Param_Form g),
    pseudoCode ( Sense1_Form_ViewMor' g )

| ViewedFunctor1_default_pseudoCode : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type)
                               (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Sense10_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
                                (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type)
                               (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense10_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
                                (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
                               (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
                               (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
                               (Sense10_Form_ff : Sense1_Form_data Sense10_FormParam_E Sense10_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff),
    pseudoCode Sense10_Form_ff ->  pseudoCode ( Sense10_Form_ff )

| UnitViewedFunctor_default_pseudoCode' : forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type)
                  (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F),
                pseudoCode ( Sense1_Unit Sense1_FormParam_F )

| Destructing_default_pseudoCode' :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

  forall (Sense00_Param_K : obGenerator -> Type)
  (Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
  (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
      Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
  (Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
  (PParam_ee_ : pseudoCode_PParam_Family Sense1_Param_ee_morphism)
  (Sense00_Form_K : obGenerator -> Type)
  (Sense01_Form_K : Sense01_data Sense00_Form_K)
  (Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)
  (Sense1_Form_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
      Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K
                        (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                        (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
  (Sense1_Form_ee_morphism : Morphism_Form_prop Sense1_Form_ee__)
  (Form_ee__ : pseudoCode_Family Sense1_Form_ee_morphism),

  pseudoCode (Sense1_Form_Destructing_default Sense1_Param_ee_morphism  Sense1_Form_ee_morphism)

| Forget_pseudoCode : forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type)
               (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
               (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
                (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
               (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F) (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF)
               (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst),
             pseudoCode (Sense1_Form_Forget Sense1_FormParam_F Sense1_Param_subst Sense1_Param_proj)

| Remember_pseudoCode : forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type)
                 (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
                  (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
                  (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
                 (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F) (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF)
                 (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst),
 forall (Sense00_Form_LF : obGenerator -> Type)
   (Sense01_Form_LF : Sense01_data Sense00_Form_LF)
   (Sense1_FormParam_LF : Sense1_FormParam_data Sense01_Form_LF Sense01_Param_PiSubstF)
   (Sense1_Form_ll' : Sense1_Form_data Sense1_FormParam_LF Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
   (Form_ll' : pseudoCode Sense1_Form_ll'),

   pseudoCode ( (**TODO: Rephrase Sense1_Form_Remember  *) Sense1_Form_Remember (Sense1_Form_Compos Sense1_Form_ll' (Sense1_Unit  Sense1_FormParam_LF)) )

with pseudoCode_PParam
           : forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E),
             forall (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F),
             forall (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
               (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F), Type :=

| AtMember_PParam :
 forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),
 forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
   (Sense1_Param_ee_ : forall (G : obGenerator) (param : Sense00_Param_SumSubstF G),
       Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst param) Sense01_Param_E)
   (Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
   (PParam_ee_ : pseudoCode_PParam_Family Sense1_Param_ee_morphism),

 forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
   pseudoCode_PParam (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal)

| Compos_pseudoCode_PParam : forall (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
                          (Sense00_Param_F' : obGenerator -> Type) (Sense01_Param_F' : Sense01_Param_data Sense00_Param_F')
                          (Sense00_Param_F'F : obGenerator -> Type) (Sense01_Param_F'F : Sense01_Param_data Sense00_Param_F'F)
                          (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F') (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F)
                          (Param_F'F : pseudoCode_PParam Sense1_Param_proj_ff' Sense1_Param_subst_ff'),
                        forall (Sense00_Param_F'' : obGenerator -> Type) (Sense01_Param_F'' : Sense01_Param_data Sense00_Param_F'')
                          (Sense00_Param_F''F' : obGenerator -> Type) (Sense01_Param_F''F' : Sense01_Param_data Sense00_Param_F''F')
                          (Sense1_Param_proj_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F'') (Sense1_Param_subst_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F')
                          (Param_F''F' : pseudoCode_PParam Sense1_Param_proj_ff_ Sense1_Param_subst_ff_),
   pseudoCode_PParam (Sense1_Compos_pseudoCode_PParam_proj  Sense1_Param_proj_ff' Sense1_Param_proj_ff_ Sense1_Param_subst_ff_)
                              (Sense1_Compos_pseudoCode_PParam_subst  Sense1_Param_proj_ff' Sense1_Param_subst_ff' Sense1_Param_subst_ff_)

| Unit_pseudoCode_PParam : forall (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) ,
    pseudoCode_PParam (Sense1_Unit_Param Sense01_Param_F) (Sense1_Unit_Param Sense01_Param_F)

| ViewMor_pseudoCode_PParam : forall (Q : obParametrizator) (G : obGenerator) (p : 'Parametrizator(  Parameter0 G ~> Q (** | Q_Viewing ... only the viewing elements*) )) (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
      (pp : viewingDefault_Constructel_Param p cons_inFibre_P),
    pseudoCode_PParam (Sense1_Param_ViewMor_proj_inFibre inFibre_P)
                       (Sense1_Param_ViewMor p)

| ViewedFunctor1_pseudoCode_PParam_default : forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
                                       (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
                                       (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
                                       (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
                                       (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),

    pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff

| UnitViewedFunctor_pseudoCode_PParam_default' : forall (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) ,
    pseudoCode_PParam (Sense1_Unit_Param Sense01_Param_F) (Sense1_Unit_Param Sense01_Param_F)

| Destructing_pseudoCode_PParam_default' :
 forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),

 forall (Sense00_Param_E : obGenerator -> Type)
    (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
    (Sense1_Param_ee_ : forall (G : obGenerator) (param : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst param) Sense01_Param_E)
    (Sense1_Param_ee_morphism :  Morphism_prop Sense1_Param_ee_)
    (PParam_ee_ : pseudoCode_PParam_Family Sense1_Param_ee_morphism),
    pseudoCode_PParam (Sense1_Destructing_pseudoCode_PParam_default_proj' Sense1_Param_subst)
                       (Sense1_Destructing_pseudoCode_PParam_default_subst' Sense1_Param_ee_morphism)

| Formatting_pseudoCode_PParam' : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type)
                   (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
                   (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
                   (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (Sense00_Param_EF : obGenerator -> Type)
                   (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
                   (Sense1_Param_subst : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst)
                   (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst),
                 pseudoCode Sense1_Form_ff  ->
                   pseudoCode_PParam  (Sense1_Param_Format (Sense1_Param_of_Sense1_FormParam Sense1_FormParam_E) Sense1_Param_proj)
                                                (Sense1_Param_Format_subst Sense1_Form_ff)

with pseudoCode_Family :
forall (Sense00_Form_F : obGenerator -> Type)
  (Sense01_Form_F : Sense01_data Sense00_Form_F)
  (Sense00_Param_F : obGenerator -> Type)
  (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
  (Sense00_Param_SumSubstF : obGenerator -> Type)
  (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
  (Sense00_Param_SubstF : obGenerator -> Type)
  (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
  (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
  (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
  (Sense00_Param_K : obGenerator -> Type)
  (Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
  (Sense1_Param_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G),
                       Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param -> Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G param)) Sense01_Param_K)
  (Sense00_Form_K : obGenerator -> Type)
  (Sense01_Form_K : Sense01_data Sense00_Form_K)
  (Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)
  (Sense1_Form_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
                      Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                        (Sense1_Param_ee__ G param form))
  (Sense1_Form_ee_morphism : Morphism_Form_prop Sense1_Form_ee__), Type :=

| Constructing_default_pseudoCode :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

   pseudoCode_Family (Morphism_Constructing_default Sense1_FormParam_F Sense1_Param_subst Sense1_Param_proj)

with pseudoCode_PParam_Family
           : forall (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
               (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
               (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
               (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
               (Sense1_Param_ee_ : forall (G : obGenerator) (param : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst param) Sense01_Param_E)
               (Sense1_Param_ee_morphism (**MEMO: THIS SIMILAR AS ASSOCIATIVITY *) : Morphism_prop Sense1_Param_ee_), Type :=

| Constructing_pseudoCode_PParam_default :
 forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),

    pseudoCode_PParam_Family (Sense1_Param_ee_ := Sense1_Constructing_pseudoCode_PParam_default_subst Sense1_Param_subst)
                              (Morphism_Constructing_PParam_default Sense1_Param_subst) .
(** # #
#+END_SRC

* Grammatical presentation of the objects

#+BEGIN_SRC coq :exports both :results silent # # **)
Inductive obCoMod : forall Sense00_Form_F (Sense01_Form_F : Sense01_data Sense00_Form_F),
    forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F),
    forall Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F, Type :=

| View : forall G : obGenerator, @obCoMod (Sense00_View G) (Sense01_View G)
  (Sense00_Param_View (Parameter0 G)) (Sense01_Param_View (Parameter0 G)) (Sense1_FormParam_View G)

| ViewingFunctorSumSubst_default :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

    obCoMod (Sense1_FormParam_SumSubst Sense1_FormParam_F Sense1_Param_subst Sense1_Param_proj)

| ViewedFunctor_default :
    forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
      (F: @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
      (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
      @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F

| PiSubst :
  forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (F: @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
    (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
  forall (Sense00_Param_PiSubstF : obGenerator -> Type)
    (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
    (Param_PiSubstF : @obCoMod_Param Sense00_Param_PiSubstF Sense01_Param_PiSubstF),
  forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF),
  forall (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F),
  forall (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF),
  forall (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst),
    obCoMod (Sense1_FormParam_PiSubst Sense1_FormParam_F Sense1_Param_subst Sense1_Param_proj)

with obCoMod_Param : forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F), Type :=

| View_Param : forall P : obParametrizator, @obCoMod_Param (Sense00_Param_View P) (Sense01_Param_View P)

| ViewingFunctor_Param_default :
 forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),

   obCoMod_Param (Sense01_Param_SumImage Sense1_Param_subst)

| ViewedFunctor_Param_default :
 forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
   (Param_F : obCoMod_Param Sense01_Param_F),

   obCoMod_Param Sense01_Param_F

| Format : forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
            (F: @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
            (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
    obCoMod_Param (Sense01_Param_Format (Sense1_Param_of_Sense1_FormParam Sense1_FormParam_F)
                                         (Sense1_Param_Id Sense01_Param_F)) .
(** # #
#+END_SRC

* Grammatical presentation of the pseudocodes of the parameter-congruences (reparametrization) and the pseudocodes of the form-congruences (conversion)

** Sense-decodings of parameter-congruences (reparametrization) : definitions

#+BEGIN_SRC coq :exports both :results silent # # **)
Section reparamCongr0 .
  Variables  (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
             (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
             (Sense00_Param_E0' : obGenerator -> Type) (Sense01_Param_E0' : Sense01_Param_data Sense00_Param_E0')
             (Sense1_Param_project_E0' : Sense1_Param_data Sense01_Param_E0' Sense01_Param_E)
             (Sense1_Param_subst_E0' : Sense1_Param_data Sense01_Param_E0' Sense01_Param_F)
             (Sense00_Param_E0'' : obGenerator -> Type) (Sense01_Param_E0'' : Sense01_Param_data Sense00_Param_E0'')
             (Sense1_Param_project_E0'' : Sense1_Param_data Sense01_Param_E0'' Sense01_Param_E)
             (Sense1_Param_subst_E0'' : Sense1_Param_data Sense01_Param_E0'' Sense01_Param_F).

  Definition reparamCongr0_prop (Sense1_Param_reparam : (Sense1_Param_data Sense01_Param_E0' Sense01_Param_E0''))
    := (forall G param, (sval Sense1_Param_project_E0'' G) ((sval Sense1_Param_reparam G) param)
                   = (sval Sense1_Param_project_E0' G) param) /\
       (forall G param, (sval Sense1_Param_subst_E0'' G) ((sval Sense1_Param_reparam G) param)
                   = (sval Sense1_Param_subst_E0' G) param) .

  Definition reparamCongr0 := { Sense1_Param_reparam : (Sense1_Param_data Sense01_Param_E0' Sense01_Param_E0'')
                           | reparamCongr0_prop Sense1_Param_reparam }.

  Section Section1.
    Variables (Sense00_Form_E : obGenerator -> Type)
              (Sense01_Form_E : Sense01_data Sense00_Form_E)
              (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E).
    Variables  (Sense00_Form_F : obGenerator -> Type)
               (Sense01_Form_F : Sense01_data Sense00_Form_F)
               (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F).

    Definition reparamCongr0_Form : reparamCongr0
                                 ->  Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_project_E0'' Sense1_Param_subst_E0''
                                 ->  Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_project_E0' Sense1_Param_subst_E0' .
    Proof.
      intros reparam ff . unshelve eexists.
      - intros G param form. unshelve eexists.
        refine (sval (sval ff G (sval (sval reparam) G param) _ )).
        + exists (sval form).
          abstract (rewrite [RHS](proj1 (proj2_sig reparam)); exact: (proj2_sig form)).
        + abstract (simpl; rewrite [LHS](proj2_sig (sval ff G (sval (sval reparam) G param) _));
                    rewrite [LHS](proj2 (proj2_sig reparam)); reflexivity).
      - abstract (split;
        [ (move; simpl; intros; rewrite [LHS](proj1 (proj2_sig ff));
                    apply: (proj2 (proj2_sig ff)); simpl; first exact: (proj2_sig (sval reparam)); reflexivity)
        | (move; simpl; intros; apply (proj2 (proj2_sig ff)); simpl; last assumption ;
                    subst; reflexivity) ] ).
    Defined.

    End Section1.

End reparamCongr0.

Section reparamCongr.
  Variables  (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
             (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
             (Sense00_Param_E0' : obGenerator -> Type) (Sense01_Param_E0' : Sense01_Param_data Sense00_Param_E0')
             (Sense1_Param_project_E0' : Sense1_Param_data Sense01_Param_E0' Sense01_Param_E)
             (Sense1_Param_subst_E0' : Sense1_Param_data Sense01_Param_E0' Sense01_Param_F)
             (Sense00_Param_E0'' : obGenerator -> Type) (Sense01_Param_E0'' : Sense01_Param_data Sense00_Param_E0'')
             (Sense1_Param_project_E0'' : Sense1_Param_data Sense01_Param_E0'' Sense01_Param_E)
             (Sense1_Param_subst_E0'' : Sense1_Param_data Sense01_Param_E0'' Sense01_Param_F).

  Definition reparamCongr_prop (Sense1_Param_reparam : (Sense1_Param_data Sense01_Param_E0' Sense01_Param_E0''))
             (Sense1_Param_reparam_rev : (Sense1_Param_data Sense01_Param_E0'' Sense01_Param_E0'))
    := (forall G param, (sval Sense1_Param_reparam_rev G) ((sval Sense1_Param_reparam G) param)
                   = (sval (Sense1_Param_Id Sense01_Param_E0') G param)) /\
       (forall G param, (sval Sense1_Param_reparam G) ((sval Sense1_Param_reparam_rev G) param)
                   = (sval (Sense1_Param_Id Sense01_Param_E0'') G param)) .

  Definition reparamCongr := { reparam_reparam_rev : reparamCongr0 Sense1_Param_project_E0' Sense1_Param_subst_E0'
                                                      Sense1_Param_project_E0'' Sense1_Param_subst_E0'' *
                                                      reparamCongr0 Sense1_Param_project_E0'' Sense1_Param_subst_E0''
                                                                 Sense1_Param_project_E0' Sense1_Param_subst_E0'
                              | reparamCongr_prop (sval (fst reparam_reparam_rev)) (sval (snd reparam_reparam_rev)) } .

End reparamCongr.
(** # #
#+END_SRC

** Sense-decodings of parameter-congruences (reparametrization) : reversibility , reflexivity , transitivity

#+BEGIN_SRC coq :exports both :results silent # # **)
Section reparamCongr_Rev.
  Variables  (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
             (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
             (Sense00_Param_E0' : obGenerator -> Type) (Sense01_Param_E0' : Sense01_Param_data Sense00_Param_E0')
             (Sense1_Param_project_E0' : Sense1_Param_data Sense01_Param_E0' Sense01_Param_E)
             (Sense1_Param_subst_E0' : Sense1_Param_data Sense01_Param_E0' Sense01_Param_F)
             (Sense00_Param_E0'' : obGenerator -> Type) (Sense01_Param_E0'' : Sense01_Param_data Sense00_Param_E0'')
             (Sense1_Param_project_E0'' : Sense1_Param_data Sense01_Param_E0'' Sense01_Param_E)
             (Sense1_Param_subst_E0'' : Sense1_Param_data Sense01_Param_E0'' Sense01_Param_F).

  Definition reparamCongr_Rev : reparamCongr Sense1_Param_project_E0' Sense1_Param_subst_E0'
                                               Sense1_Param_project_E0'' Sense1_Param_subst_E0''
                                 -> reparamCongr Sense1_Param_project_E0'' Sense1_Param_subst_E0''
                                                  Sense1_Param_project_E0' Sense1_Param_subst_E0' .
  Proof.
    intros reparam. unshelve eexists. split.
    - exact: (snd (sval reparam)).
    - exact: (fst (sval reparam)).
    - abstract (split; [ simpl; intros; exact: (proj2 (proj2_sig reparam))
             | simpl; intros; exact: (proj1 (proj2_sig reparam)) ] ).
  Defined.
End reparamCongr_Rev.

Definition reparamCongr_Refl :
forall (Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense00_Param_EF : obGenerator -> Type)
(Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
(Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E )
(Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F),
reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff Sense1_Param_subst_ff  .
Proof.
  intros. unshelve eexists. split.
  - { exists (Sense1_Param_Id _) .
      abstract (split; reflexivity).
    }
  - { exists (Sense1_Param_Id _) .
      abstract (split; reflexivity).
    }
  - abstract (split; reflexivity).
Defined.

Definition reparamCongr0_Trans :
forall (Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense00_Param_EF : obGenerator -> Type)
(Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
(Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
(Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
(Sense00_Param_EF0 : obGenerator -> Type)
(Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0)
(Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
(Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F)
(Sense1_Param_reparam_rr0 : reparamCongr0 Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
(Sense00_Param_EF1 : obGenerator -> Type)
(Sense01_Param_EF1 : Sense01_Param_data Sense00_Param_EF1)
(Sense1_Param_proj_ff1 : Sense1_Param_data Sense01_Param_EF1 Sense01_Param_E)
(Sense1_Param_subst_ff1 : Sense1_Param_data Sense01_Param_EF1 Sense01_Param_F)
(Sense1_Param_reparam_rr1 : reparamCongr0 Sense1_Param_proj_ff0 Sense1_Param_subst_ff0 Sense1_Param_proj_ff1 Sense1_Param_subst_ff1),
reparamCongr0 Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff1 Sense1_Param_subst_ff1 .
Proof.
  intros. exists (Sense1_Param_Compos (sval Sense1_Param_reparam_rr0) (sval Sense1_Param_reparam_rr1)) .
  abstract ( split; [ intros; simpl; rewrite [LHS](proj1 (proj2_sig Sense1_Param_reparam_rr1)) [LHS](proj1 (proj2_sig Sense1_Param_reparam_rr0)); reflexivity
                  | intros; simpl; rewrite [LHS](proj2 (proj2_sig Sense1_Param_reparam_rr1)) [LHS](proj2 (proj2_sig Sense1_Param_reparam_rr0)); reflexivity ] ) .
Defined.

Definition reparamCongr_Trans :
forall (Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense00_Param_EF : obGenerator -> Type)
(Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
(Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
(Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
(Sense00_Param_EF0 : obGenerator -> Type)
(Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0)
(Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
(Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F)
(Sense1_Param_reparam_rr0 : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
(Sense00_Param_EF1 : obGenerator -> Type)
(Sense01_Param_EF1 : Sense01_Param_data Sense00_Param_EF1)
(Sense1_Param_proj_ff1 : Sense1_Param_data Sense01_Param_EF1 Sense01_Param_E)
(Sense1_Param_subst_ff1 : Sense1_Param_data Sense01_Param_EF1 Sense01_Param_F)
(Sense1_Param_reparam_rr1 : reparamCongr Sense1_Param_proj_ff0 Sense1_Param_subst_ff0 Sense1_Param_proj_ff1 Sense1_Param_subst_ff1),
reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff1 Sense1_Param_subst_ff1 .
Proof.
  intros. unshelve eexists. split.
  - apply: reparamCongr0_Trans . exact: (fst (sval Sense1_Param_reparam_rr0)).  exact: (fst (sval Sense1_Param_reparam_rr1)).
  - apply: reparamCongr0_Trans . exact: (snd (sval Sense1_Param_reparam_rr1)).  exact: (snd (sval Sense1_Param_reparam_rr0)).
  - abstract (split; [simpl; intros; rewrite (fst (proj2_sig  Sense1_Param_reparam_rr1)) (fst (proj2_sig  Sense1_Param_reparam_rr0)); reflexivity
           | simpl; intros; rewrite (snd (proj2_sig  Sense1_Param_reparam_rr0)) (snd (proj2_sig  Sense1_Param_reparam_rr1)); reflexivity ] ) .
Defined.
(** # #
#+END_SRC

** Sense-decodings of parameter-congruences (reparametrization) : (Compos_PParam-)composition-monoidal associativity

#+BEGIN_SRC coq :exports both :results silent # # **)
Definition reparamCongr0_Compos_pseudoCode_PParam_cong :
forall (Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense00_Param_EF : obGenerator -> Type)
(Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
(Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
(Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
(Sense00_Param_EF0 : obGenerator -> Type)
(Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0)
(Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
(Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F)
(Sense1_Param_reparam_rr : reparamCongr0 Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
(Sense00_Param_D : obGenerator -> Type)
(Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
(Sense00_Param_DE : obGenerator -> Type)
(Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
(Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D)
(Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
(Sense00_Param_DE0 : obGenerator -> Type)
(Sense01_Param_DE0 : Sense01_Param_data Sense00_Param_DE0)
(Sense1_Param_proj_ee0 : Sense1_Param_data Sense01_Param_DE0 Sense01_Param_D)
(Sense1_Param_subst_ee0 : Sense1_Param_data Sense01_Param_DE0 Sense01_Param_E)
(Sense1_Param_reparam_qq : reparamCongr0 Sense1_Param_proj_ee Sense1_Param_subst_ee Sense1_Param_proj_ee0 Sense1_Param_subst_ee0),
 reparamCongr0 (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ff Sense1_Param_proj_ee Sense1_Param_subst_ee)
    (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_subst_ee)
    (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ff0 Sense1_Param_proj_ee0 Sense1_Param_subst_ee0)
    (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ff0 Sense1_Param_subst_ff0 Sense1_Param_subst_ee0).
Proof.
  intros. exists (Sense1_Param_Subst1 (proj1 (proj2_sig Sense1_Param_reparam_rr)) (proj2 (proj2_sig Sense1_Param_reparam_qq)) ) .
  abstract (split; [ simpl; intros; exact: (proj1 (proj2_sig (Sense1_Param_reparam_qq)))
                   | simpl; intros; exact: (proj2 (proj2_sig (Sense1_Param_reparam_rr))) ] ).
Defined.

Definition reparamCongr_Compos_pseudoCode_PParam_cong :
forall (Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense00_Param_EF : obGenerator -> Type)
(Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
(Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
(Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
(Sense00_Param_EF0 : obGenerator -> Type)
(Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0)
(Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
(Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F)
(Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
(Sense00_Param_D : obGenerator -> Type)
(Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
(Sense00_Param_DE : obGenerator -> Type)
(Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
(Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D)
(Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
(Sense00_Param_DE0 : obGenerator -> Type)
(Sense01_Param_DE0 : Sense01_Param_data Sense00_Param_DE0)
(Sense1_Param_proj_ee0 : Sense1_Param_data Sense01_Param_DE0 Sense01_Param_D)
(Sense1_Param_subst_ee0 : Sense1_Param_data Sense01_Param_DE0 Sense01_Param_E)
(Sense1_Param_reparam_qq : reparamCongr Sense1_Param_proj_ee Sense1_Param_subst_ee Sense1_Param_proj_ee0 Sense1_Param_subst_ee0),
reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ff Sense1_Param_proj_ee Sense1_Param_subst_ee)
              (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_subst_ee)
              (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ff0 Sense1_Param_proj_ee0 Sense1_Param_subst_ee0)
    (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ff0 Sense1_Param_subst_ff0 Sense1_Param_subst_ee0).
Proof.
  unshelve eexists. split.
  - apply: reparamCongr0_Compos_pseudoCode_PParam_cong. exact: (fst (sval Sense1_Param_reparam_rr)). exact: (fst (sval Sense1_Param_reparam_qq)).
  - apply: reparamCongr0_Compos_pseudoCode_PParam_cong.  exact: (snd (sval Sense1_Param_reparam_rr)). exact: (snd (sval Sense1_Param_reparam_qq)).
  - abstract (split; [ simpl; intros; apply: Sense00_Param_Subst_quotientLogical; simpl;
             [ rewrite (proj1 (proj2_sig  Sense1_Param_reparam_qq)); simpl; reflexivity
             | rewrite (proj1 (proj2_sig  Sense1_Param_reparam_rr)); simpl; reflexivity ]
           | simpl; intros; apply: Sense00_Param_Subst_quotientLogical; simpl;
             [ rewrite (proj2 (proj2_sig  Sense1_Param_reparam_qq)); simpl; reflexivity
             | rewrite (proj2 (proj2_sig  Sense1_Param_reparam_rr)); simpl; reflexivity ] ] ).
Defined.

Section Assoc_reparam.
Variables (Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense00_Param_EF : obGenerator -> Type)
(Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
(Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
(Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
(Sense00_Param_D : obGenerator -> Type)
(Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
(Sense00_Param_DE : obGenerator -> Type)
(Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
(Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D)
(Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
(Sense00_Param_C : obGenerator -> Type)
(Sense01_Param_C : Sense01_Param_data Sense00_Param_C)
(Sense00_Param_CD : obGenerator -> Type)
(Sense01_Param_CD : Sense01_Param_data Sense00_Param_CD)
(Sense1_Param_proj_dd : Sense1_Param_data Sense01_Param_CD Sense01_Param_C)
(Sense1_Param_subst_dd : Sense1_Param_data Sense01_Param_CD Sense01_Param_D).

Definition reparamCongr_Assoc_reparam :
 reparamCongr
   (Sense1_Compos_pseudoCode_PParam_proj
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ff Sense1_Param_proj_ee Sense1_Param_subst_ee)
      Sense1_Param_proj_dd
      Sense1_Param_subst_dd)
   (Sense1_Compos_pseudoCode_PParam_subst
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ff Sense1_Param_proj_ee Sense1_Param_subst_ee)
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_subst_ee)
      Sense1_Param_subst_dd)

   (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ff
                                              (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee Sense1_Param_proj_dd Sense1_Param_subst_dd)
                                              (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee Sense1_Param_subst_ee Sense1_Param_subst_dd))
   (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ff
                                               Sense1_Param_subst_ff
                                               (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee Sense1_Param_subst_ee Sense1_Param_subst_dd)).
Proof. fold Sense1_Compos_pseudoCode_PParam_proj.
  unshelve eexists.
  - split.
    { unshelve eexists.
      - unshelve eexists.
        + intros G cd__de_ef. unshelve eexists.
          * exists ( projT1 cd__de_ef) . exists (projT1 (sval (projT2 cd__de_ef))) .
            abstract (simpl; exact: (proj2_sig (projT2 cd__de_ef))).
          * exists (sval (projT2 (sval (projT2 cd__de_ef)))).
            abstract (simpl; exact: (proj2_sig (projT2 (sval (projT2 cd__de_ef))))).
        + abstract (move; simpl; intros; apply: Sense00_Param_Subst_quotientLogical; simpl;
                    [ apply: Sense00_Param_Subst_quotientLogical; simpl; reflexivity
                    | reflexivity ]) .
      - abstract (split; [reflexivity | split; reflexivity]).
    }
    { unshelve eexists.
      - unshelve eexists.
        + intros G cd_de__ef. unshelve eexists.
          * exact: (projT1 (projT1 cd_de__ef)).
          * unshelve eexists.
            exists ( sval (projT2 (projT1 cd_de__ef))).
            exact: (projT2 cd_de__ef).
            abstract (simpl; exact: (proj2_sig (projT2 (projT1 cd_de__ef)))).
        + abstract (move; simpl; intros; apply: Sense00_Param_Subst_quotientLogical; simpl;
                    [ reflexivity
                    | apply: Sense00_Param_Subst_quotientLogical; simpl; reflexivity ]).
      - abstract (split; [reflexivity | split; reflexivity]).
    }
  - abstract( split; [ simpl; intros; apply: Sense00_Param_Subst_quotientLogical; simpl; first reflexivity;
      apply: Sense00_Param_Subst_quotientLogical; simpl; reflexivity
    | simpl; intros; apply: Sense00_Param_Subst_quotientLogical; simpl; last reflexivity;
      apply: Sense00_Param_Subst_quotientLogical; simpl; reflexivity ] ).
Defined.
End Assoc_reparam.
(** # #
#+END_SRC

** Sense-decodings of parameter-congruences (reparametrization) : etc ...

#+BEGIN_SRC coq :exports both :results silent # # **)
Lemma reparamCongr_morCoMod_comp_Unit
  : forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
                (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
                (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F),
           reparamCongr (Sense1_Compos_pseudoCode_PParam_proj (Sense1_Unit_Param Sense01_Param_F) Sense1_Param_proj_ff Sense1_Param_subst_ff)
                         (Sense1_Compos_pseudoCode_PParam_subst (Sense1_Unit_Param Sense01_Param_F) (Sense1_Unit_Param Sense01_Param_F) Sense1_Param_subst_ff) Sense1_Param_proj_ff Sense1_Param_subst_ff.
Proof.
  intros. unshelve eexists. split.
  - unshelve eexists.
    + exact: Sense1_Param_Subst_proj.
    + abstract (split;
                [ intros; simpl; reflexivity
                |  intros; simpl; symmetry; exact: (proj2_sig (projT2 param)) ] ) .
  - unshelve eexists.
    + unshelve eexists. intros G param. exists param. exists (sval Sense1_Param_subst_ff G param). abstract reflexivity.
      abstract (move; intros; apply: Sense00_Param_Subst_quotientLogical; simpl;
                [ reflexivity | apply: (proj2_sig Sense1_Param_subst_ff) ]).
    + abstract (split; intros; reflexivity).
  - abstract( split; [ intros; simpl;  apply: Sense00_Param_Subst_quotientLogical; simpl;
             [ reflexivity
             | symmetry; exact: (proj2_sig (projT2 param)) ]
           | intros; simpl; reflexivity ] ).
Defined.

Lemma reparamCongr_Unit_comp_morCoMod
  : forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
                (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
                (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F),
           reparamCongr (Sense1_Compos_pseudoCode_PParam_proj  Sense1_Param_proj_ff (Sense1_Unit_Param Sense01_Param_E) (Sense1_Unit_Param Sense01_Param_E))
                         (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ff Sense1_Param_subst_ff (Sense1_Unit_Param Sense01_Param_E)) Sense1_Param_proj_ff Sense1_Param_subst_ff.
Proof.
  intros. unshelve eexists. split.
  - unshelve eexists.
    + exact: Sense1_Param_Subst_subst.
    + abstract (split;
                [ intros; simpl; exact: (proj2_sig (projT2 param))
                | intros; simpl; reflexivity] ) .
  - unshelve eexists.
    + unshelve eexists. intros G param. exists (sval Sense1_Param_proj_ff G param). exists param. abstract reflexivity.
      abstract (move; intros; apply: Sense00_Param_Subst_quotientLogical; simpl;
                [ apply: (proj2_sig Sense1_Param_proj_ff) | reflexivity  ]).
    + abstract (split; intros; reflexivity).
  - abstract( split; [ intros; simpl;  apply: Sense00_Param_Subst_quotientLogical; simpl;
                       [ exact: (proj2_sig (projT2 param))
                       | reflexivity ]
           | intros; simpl; reflexivity ] ).
Defined.

Lemma reparamCongr_ViewMor_PParam_cong :
    forall (Q : obParametrizator) (G : obGenerator) (p : 'Parametrizator(  Parameter0 G ~> Q )) (P : obParametrizator) (inFibre_P : inFibre G P),
    forall (G' : obGenerator) (p' : 'Parametrizator(  Parameter0 G' ~> Q )) (inFibre_P' : inFibre G' P),
    forall (g : reparamCongrGenerator G' G),
      forall (Heqparam : p' = (Parameter1 (fst (sval g))) o>Parametrizator p),
      forall (Heqis : fst (sval inFibre_P') =  fst (sval (inFibre_transformation  g inFibre_P)) ),
        reparamCongr (Sense1_Param_ViewMor_proj_inFibre inFibre_P) (Sense1_Param_ViewMor p) (Sense1_Param_ViewMor_proj_inFibre inFibre_P') (Sense1_Param_ViewMor p') .
Proof.
  intros. unshelve eexists. split.
  - unshelve eexists.
    + exact (Sense1_Param_ViewMor (Parameter1 (snd (sval g)))).
    + abstract (split;
      [ intros; simpl; subst; rewrite Heqis; rewrite -polyParametrizator_morphism;
        rewrite [X in _ o>Parametrizator X = _]polyParametrizator_morphism;
        rewrite - Parameter_morphism; rewrite (proj2 (proj2_sig g)); rewrite -Parameter_unitGenerator;
        rewrite -polyParametrizator_unitParametrizator; reflexivity
      | intros ? param; simpl; subst;
      rewrite -polyParametrizator_morphism; congr (param o>Parametrizator _);
      rewrite polyParametrizator_morphism;  rewrite - Parameter_morphism;  rewrite (proj2 (proj2_sig g)); rewrite -Parameter_unitGenerator;
      rewrite -polyParametrizator_unitParametrizator; reflexivity ] ) .
  - unshelve eexists.
    + exact (Sense1_Param_ViewMor (Parameter1 (fst (sval g)))).
    + abstract (split;
                [ intros; simpl; subst; rewrite Heqis; rewrite -polyParametrizator_morphism; reflexivity
                | intros; simpl; subst; rewrite -polyParametrizator_morphism; reflexivity ] ) .
  - abstract (split; intros; simpl;
    [ rewrite -polyParametrizator_morphism;  rewrite - Parameter_morphism;  rewrite (proj2 (proj2_sig g)); rewrite -Parameter_unitGenerator;
    rewrite -unitParametrizator_polyParametrizator; reflexivity
    | rewrite -polyParametrizator_morphism;  rewrite - Parameter_morphism;  rewrite (proj1 (proj2_sig g)); rewrite -Parameter_unitGenerator;
    rewrite -unitParametrizator_polyParametrizator; reflexivity ] ) .
Defined.

Lemma reparamCongr_Constructing_PParam_default_cong
     : forall (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
         (Sense00_Param_SubstF : obGenerator -> Type)
         (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
          (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G) (P : obParametrizator)
         (inFibre_P : inFibre G P) (paramlocal' : Sense00_Param_SumSubstF G) (inFibre_P' : inFibre G P)
         (Heqparamlocal : paramlocal' = paramlocal)
         (Heqis : fst (sval inFibre_P') = fst (sval inFibre_P)),
 reparamCongr (Sense1_Constructing_pseudoCode_PParam_default_proj Sense1_Param_subst paramlocal inFibre_P)
                  (Sense1_Constructing_pseudoCode_PParam_default_subst Sense1_Param_subst paramlocal) (Sense1_Constructing_pseudoCode_PParam_default_proj Sense1_Param_subst paramlocal' inFibre_P')
                  (Sense1_Constructing_pseudoCode_PParam_default_subst Sense1_Param_subst paramlocal').
Proof.
  intros. unshelve eexists. split.
  - unshelve eexists.
    + unshelve eexists.
      * intros G0 paramm. exists (projT1 paramm).
        { (* logiccal modulo part *) abstract (exists (sval (projT2 paramm)); (*/!\ HERE OK USE OF projT2 of _LocalParam_ *)
                                                 simpl; rewrite (proj2_sig (projT2 paramm)); simpl; subst; reflexivity).
        }
      * abstract (move; intros; simpl; apply: Sense00_LocalParam_quotientLogical; simpl; reflexivity).
    + abstract (split; [intros ? param; simpl; subst; simpl; congr ( (projT1 param) o>Parametrizator _); assumption
                       | intros; apply: Sense00_Param_SumImage_quotientLogical; simpl; subst; simpl; reflexivity ] ).
  - unshelve eexists.
    + unshelve eexists.
      * intros G0 paramm. exists (projT1 paramm).
        { (* logiccal modulo part *) abstract (exists (sval (projT2 paramm)); (*/!\ HERE OK USE OF projT2 of _LocalParam_ *)
                                                 simpl; rewrite (proj2_sig (projT2 paramm)); simpl; subst; reflexivity).
        }
      * abstract (move; intros; simpl; apply: Sense00_LocalParam_quotientLogical; simpl; reflexivity).
    + abstract ( split; [ intros ? param; simpl; subst; simpl; congr ( (projT1 param) o>Parametrizator _); symmetry; assumption
                        | intros; apply: Sense00_Param_SumImage_quotientLogical; simpl; subst; simpl; reflexivity ] ).
  - abstract (split; [ intros; simpl;  apply: Sense00_LocalParam_quotientLogical; simpl; reflexivity
                     | intros; simpl;  apply: Sense00_LocalParam_quotientLogical; simpl; reflexivity ] ).
Defined.

Definition reparamCongr_Destructing_pseudoCode_PParam_default_cong
(Sense00_Param_SumSubstF : obGenerator -> Type)
(Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
(Sense00_Param_SubstF : obGenerator -> Type)
(Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense1_Param_ee : forall (G : obGenerator) (param : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst param) Sense01_Param_E)
(Sense1_Param_ee_morphism :
forall (G G' : obGenerator) (p : 'Parametrizator ( Parameter0 G' ~> Parameter0 G )) (paramlocal : Sense00_Param_SumSubstF G) (paramlocal' : Sense00_Param_SumSubstF G')
  (Heqparamlocal : paramlocal' = p o>Parametrizator_ paramlocal) (H : obGenerator) (param' : Sense00_LocalParam_ Sense1_Param_subst paramlocal' H) (param : Sense00_LocalParam_ Sense1_Param_subst paramlocal H),
param = sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst Heqparamlocal) H param' -> sval (Sense1_Param_ee G paramlocal) H param = sval (Sense1_Param_ee G' paramlocal') H param')
(Sense1_Param_dd : forall (G : obGenerator) (param : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst param) Sense01_Param_E)
(Sense1_Param_dd_morphism :
forall (G G' : obGenerator) (p : 'Parametrizator ( Parameter0 G' ~> Parameter0 G )) (paramlocal : Sense00_Param_SumSubstF G) (paramlocal' : Sense00_Param_SumSubstF G')
  (Heqparamlocal : paramlocal' = p o>Parametrizator_ paramlocal) (H : obGenerator) (param' : Sense00_LocalParam_ Sense1_Param_subst paramlocal' H) (param : Sense00_LocalParam_ Sense1_Param_subst paramlocal H),
param = sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst Heqparamlocal) H param' -> sval (Sense1_Param_dd G paramlocal) H param = sval (Sense1_Param_dd G' paramlocal') H param')
(Sense1_Param_reparam_eedd_ :
forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G) (P : obParametrizator) (inFibre_P : inFibre G P),
reparamCongr (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee G paramlocal) (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P)
  (Sense1_Param_dd G paramlocal)) :
reparamCongr (Sense1_Destructing_pseudoCode_PParam_default_proj' Sense1_Param_subst) (Sense1_Destructing_pseudoCode_PParam_default_subst' Sense1_Param_ee_morphism)
    (Sense1_Destructing_pseudoCode_PParam_default_proj' Sense1_Param_subst) (Sense1_Destructing_pseudoCode_PParam_default_subst' Sense1_Param_dd_morphism).
Proof.
  unshelve eexists. split.
  - unshelve eexists. exact: (Sense1_Param_Id _). split.
    + abstract(simpl;intros; reflexivity).
    + abstract(intros G paramsum; simpl; rewrite -[RHS](proj2 (proj2_sig (fst (sval (Sense1_Param_reparam_eedd_ G (projT1 paramsum) _ (unitParametrizator_reparamCongrParametrizator _))))));
      apply: (Sense1_Param_Destructing_default_quotientLogical Sense1_Param_dd); first reflexivity;
      simpl; rewrite [RHS]unitParametrizator_polyParametrizator; rewrite [RHS](proj1 (proj2_sig (fst (sval (Sense1_Param_reparam_eedd_ G (projT1 paramsum) _ (unitParametrizator_reparamCongrParametrizator _)))))); simpl; rewrite -[RHS]unitParametrizator_polyParametrizator; reflexivity).
  - unshelve eexists. exact: (Sense1_Param_Id _). split.
    + abstract(simpl;intros; reflexivity).
    + abstract(intros G paramsum; simpl; rewrite -[RHS](proj2 (proj2_sig (snd (sval (Sense1_Param_reparam_eedd_ G (projT1 paramsum) _ (InFibre _))))));
      apply: (Sense1_Param_Destructing_default_quotientLogical Sense1_Param_ee); first reflexivity;
      simpl; rewrite [RHS]unitParametrizator_polyParametrizator; rewrite [RHS](proj1 (proj2_sig (snd (sval (Sense1_Param_reparam_eedd_ G (projT1 paramsum) _ (InFibre _)))))); simpl; rewrite -[RHS]unitParametrizator_polyParametrizator; reflexivity).
  - abstract(split; reflexivity).
Defined.

Lemma reparamCongr_ViewMor_PParam_comp_ViewMor_PParam
     : forall (Q : obParametrizator) (G : obGenerator) (p : 'Parametrizator ( Parameter0 G ~> Q )) (P : obParametrizator) (inFibre_P : inFibre G P) (G' : obGenerator)
         (p' : 'Parametrizator ( Parameter0 G' ~> P )) (P' : obParametrizator) (inFibre_P' : inFibre G' P'),
     reparamCongr
                  (Sense1_Compos_pseudoCode_PParam_proj (Sense1_Param_ViewMor_proj_inFibre inFibre_P) (Sense1_Param_ViewMor_proj_inFibre inFibre_P') (Sense1_Param_ViewMor p'))
                  (Sense1_Compos_pseudoCode_PParam_subst (Sense1_Param_ViewMor_proj_inFibre inFibre_P) (Sense1_Param_ViewMor p) (Sense1_Param_ViewMor p'))
                  (Sense1_Param_ViewMor_proj_inFibre inFibre_P') (Sense1_Param_ViewMor (inFibre_transp_codom inFibre_P p' o>Parametrizator p)).
Proof.
  intros. unshelve eexists. split.
  - unshelve eexists.
    + exact: Sense1_Param_Subst_proj.
    + abstract (split; [ intros; simpl; reflexivity
             | intros; simpl; rewrite polyParametrizator_morphism;
              congr ( _ _ ); rewrite polyParametrizator_morphism; rewrite -[X in X o>Parametrizator _ = _](proj2_sig (projT2 param));
              simpl; rewrite -polyParametrizator_morphism; rewrite (proj1 (proj2_sig inFibre_P)); rewrite -unitParametrizator_polyParametrizator;
              reflexivity ] ).
  - unshelve eexists.
    + unshelve eexists. intros G0 param. exists param.
      exists (sval (Sense1_Param_ViewMor (snd (sval inFibre_P))) _ (sval  (Sense1_Param_ViewMor p') G0 param)).
      abstract (simpl; rewrite -polyParametrizator_morphism; rewrite (proj2 (proj2_sig inFibre_P));
                rewrite -unitParametrizator_polyParametrizator; reflexivity).
      abstract (move; intros; apply: Sense00_Param_Subst_quotientLogical; simpl;
        [ reflexivity
        | simpl; rewrite -?polyParametrizator_morphism; reflexivity ] ).
    + abstract (split; [ intros; reflexivity
                       | intros;  simpl;  rewrite -?polyParametrizator_morphism; reflexivity ] ).
  -  abstract (split; [ intros; simpl;  apply: Sense00_Param_Subst_quotientLogical; simpl;
             [ reflexivity
             | simpl; rewrite -[X in X o>Parametrizator _ = _](proj2_sig (projT2 param));
              simpl; rewrite -polyParametrizator_morphism; rewrite (proj1 (proj2_sig inFibre_P)); rewrite -unitParametrizator_polyParametrizator;
                reflexivity ]
           | intros; simpl; reflexivity ] ) .
Defined.

Lemma reparamRev_ViewMor_PParam_comp_Constructing_PParam_default
     : forall (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
         (Sense00_Param_SubstF : obGenerator -> Type)
         (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
         (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G) (P : obParametrizator)
         (inFibre_P : inFibre G P) (G' : obGenerator) (p' : 'Parametrizator ( Parameter0 G' ~> P )) (P' : obParametrizator) (inFibre_P' : inFibre G' P'),
     reparamCongr
                  (Sense1_Compos_pseudoCode_PParam_proj (Sense1_Constructing_pseudoCode_PParam_default_proj Sense1_Param_subst paramlocal inFibre_P)
                     (Sense1_Param_ViewMor_proj_inFibre inFibre_P') (Sense1_Param_ViewMor p'))
                  (Sense1_Compos_pseudoCode_PParam_subst (Sense1_Constructing_pseudoCode_PParam_default_proj Sense1_Param_subst paramlocal inFibre_P)
                     (Sense1_Constructing_pseudoCode_PParam_default_subst Sense1_Param_subst paramlocal) (Sense1_Param_ViewMor p'))
                  (Sense1_Constructing_pseudoCode_PParam_default_proj Sense1_Param_subst (inFibre_transp_codom inFibre_P p' o>Parametrizator_[sval Sense01_Param_SumSubstF] paramlocal) inFibre_P')
                  (Sense1_Constructing_pseudoCode_PParam_default_subst Sense1_Param_subst (inFibre_transp_codom inFibre_P p' o>Parametrizator_ paramlocal)).
Proof.
  intros. unshelve eexists. split.
  - unshelve eexists.
    + unshelve eexists.
      intros G0 paramsubst. exists (projT1 paramsubst).
      { (* logiccal modulo part *)
        abstract (exists (sval (projT2 (*this projT2 of local must be under abstract ...*) (sval (projT2 paramsubst))));
                    simpl; rewrite (proj2_sig (projT2 (sval (projT2 paramsubst)))); simpl;
                    rewrite [RHS](proj1 (proj2_sig Sense01_Param_SumSubstF));
                    congr ( _  o>Parametrizator_ paramlocal ); rewrite polyParametrizator_morphism;
                    rewrite -[X in _ =  X o>Parametrizator _](proj2_sig (projT2 paramsubst)); simpl;
                    simpl; rewrite -polyParametrizator_morphism; rewrite (proj1 (proj2_sig inFibre_P));
                    rewrite -unitParametrizator_polyParametrizator; reflexivity) .
      }
      abstract (move; intros; simpl; apply: Sense00_LocalParam_quotientLogical; simpl; reflexivity).
    + abstract ( split; [intros; simpl;  reflexivity
             | intros; apply: Sense00_Param_SumImage_quotientLogical; simpl;  simpl; rewrite (proj1 (proj2_sig Sense01_Param_SumSubstF));
                congr ( _  o>Parametrizator_ paramlocal );  rewrite polyParametrizator_morphism;
              rewrite -[X in X o>Parametrizator _ = _ ](proj2_sig (projT2 param)); simpl;
              simpl; rewrite -polyParametrizator_morphism; rewrite (proj1 (proj2_sig inFibre_P));
                rewrite -unitParametrizator_polyParametrizator; reflexivity ] ) .
  - unshelve eexists.
    + unshelve eexists.
      * intros G0 paramm. exists (projT1 paramm).
        unshelve eexists. exists (sval (Sense1_Param_ViewMor (snd (sval inFibre_P))) _ (sval  (Sense1_Param_ViewMor p') _ (projT1 paramm))).
        (* exists (sval (Sense1_Param_ViewMor p') _ (projT1 paramm)). *)
        { (* logiccal modulo part *)
          abstract ( exists (sval (projT2 paramm)) (*/!\ HERE OK USE OF projT2 of _LocalParam_ *);
                       simpl; rewrite (proj2_sig (projT2 paramm)); simpl;
                       rewrite (proj1 (proj2_sig Sense01_Param_SumSubstF)); rewrite -?polyParametrizator_morphism; reflexivity ).
        }
        abstract (simpl; simpl; rewrite -polyParametrizator_morphism; rewrite (proj2 (proj2_sig inFibre_P));
                  rewrite -unitParametrizator_polyParametrizator; reflexivity ).
      * abstract (move; intros; simpl; apply: Sense00_Param_Subst_quotientLogical; first (simpl; reflexivity);
                  apply: Sense00_LocalParam_quotientLogical; simpl; rewrite -?polyParametrizator_morphism; reflexivity ).
    + abstract (split; [ intros; simpl; reflexivity
             | intros; apply: Sense00_Param_SumImage_quotientLogical; simpl; rewrite (proj1 (proj2_sig Sense01_Param_SumSubstF));
               rewrite -?polyParametrizator_morphism; reflexivity ] ) .
  - abstract (split; [ intros; simpl;  apply: Sense00_Param_Subst_quotientLogical; first (simpl; reflexivity);
             apply: Sense00_LocalParam_quotientLogical; simpl;
             rewrite -[X in X o>Parametrizator _ = _](proj2_sig (projT2 param)); simpl;
              simpl; rewrite -polyParametrizator_morphism; rewrite (proj1 (proj2_sig inFibre_P));
                rewrite -unitParametrizator_polyParametrizator; reflexivity
             | intros; simpl; apply: Sense00_LocalParam_quotientLogical; simpl; reflexivity ] ) .
Defined.

Lemma reparamCongr_Constructing_PParam_default_comp_Destructing_PParam_default :
 forall (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF) (Sense00_Param_SubstF : obGenerator -> Type)
           (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF) (Sense00_Param_K : obGenerator -> Type)
           (Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
           (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
           (Sense1_Param_ee_morphism : forall (G G' : obGenerator) (p : 'Parametrizator ( Parameter0 G' ~> Parameter0 G )) (paramlocal : Sense00_Param_SumSubstF G) (paramlocal' : Sense00_Param_SumSubstF G')
                                               (Heqparamlocal : paramlocal' = p o>Parametrizator_ paramlocal) (H : obGenerator) (param' : Sense00_LocalParam_ Sense1_Param_subst paramlocal' H)
                                               (param : Sense00_LocalParam_ Sense1_Param_subst paramlocal H),
               param = sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst Heqparamlocal) H param' ->
               sval (Sense1_Param_ee_ G paramlocal) H param = sval (Sense1_Param_ee_ G' paramlocal') H param') (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
           (P : obParametrizator) (inFibre_P : inFibre G P),
      reparamCongr
        (Sense1_Compos_pseudoCode_PParam_proj (Sense1_Destructing_pseudoCode_PParam_default_proj' Sense1_Param_subst)
                                                   (Sense1_Constructing_pseudoCode_PParam_default_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Constructing_pseudoCode_PParam_default_subst Sense1_Param_subst paramlocal))
        (Sense1_Compos_pseudoCode_PParam_subst (Sense1_Destructing_pseudoCode_PParam_default_proj' Sense1_Param_subst) (Sense1_Destructing_pseudoCode_PParam_default_subst' Sense1_Param_ee_morphism)
                                                    (Sense1_Constructing_pseudoCode_PParam_default_subst Sense1_Param_subst paramlocal))
        (Sense1_Compos_pseudoCode_PParam_proj (Sense1_Unit_Param Sense01_Param_K) (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal))
        (Sense1_Compos_pseudoCode_PParam_subst (Sense1_Unit_Param Sense01_Param_K) (Sense1_Unit_Param Sense01_Param_K) (Sense1_Param_ee_ G paramlocal)).
Proof.
  unshelve eexists. split.
  - unshelve eexists.
    + unshelve eexists.
      * { intros G' param'_param''. unshelve eexists.
          - exists (sval (Sense1_Constructing_pseudoCode_PParam_default_proj _ _ (InFibre _))  _
                    (sval (Sense1_Param_Subst_proj _ _ ) _  param'_param'') ).
            (**TODO: add and use Sense1_Param_Sum_*)
            (*TODO: logical part starts here , but why necessary to be transparent in the first line  ...
              hmm OK to be transparent for the first line if no use the projT2 of another LocalParam (the local here is projT1 param'_param'') .
              In short : any such use of projT2 of another LocalParam shall be under abstract *)
            simpl; exists ( sval (Sense1_Param_Sum_subst _ ) _ (sval (Sense1_Param_Subst_subst _ _ ) _  param'_param'')).
            abstract (simpl; rewrite [LHS](proj2_sig (projT2 (sval (projT2 param'_param'')))); simpl;
              rewrite -[in RHS]unitParametrizator_polyParametrizator;
            rewrite -[RHS](f_equal (@projT1 _ _) (proj2_sig (projT2 param'_param''))); simpl; reflexivity).
          - exact: Sense00_Param_AtParam_self.
        }
      * { abstract (move; simpl; intros; apply: Sense00_Param_Subst_quotientLogical; simpl;
          [ apply: Sense00_LocalParam_quotientLogical; simpl; do 2 rewrite -unitParametrizator_polyParametrizator; reflexivity
          | rewrite (proj2_sig (Sense1_Param_ee_ _ _)); congr (sval _ _ _);
            apply: Sense00_LocalParam_quotientLogical; simpl; do 2 rewrite -unitParametrizator_polyParametrizator; reflexivity ] ).
        }
    + abstract (split; simpl; intros G' param; first (simpl; do 1 rewrite -unitParametrizator_polyParametrizator; reflexivity);
        simpl; intros; unshelve eapply Sense1_Param_ee_morphism with (p := (projT1 (projT1 param)));
          first (by exact: (f_equal (@projT1 _ _) (proj2_sig (projT2 param))));
          simpl; apply: Sense00_LocalParam_quotientLogical; simpl; do 1 rewrite -unitParametrizator_polyParametrizator;
            exact: polyParametrizator_unitParametrizator) .
  - unshelve eexists.
    + unshelve eexists.
      * intros G' param' . exists (sval (Sense1_Param_Subst_proj _ _ ) _ param') . simpl.
        { unshelve eexists.
          exists (sval (Sense1_LocalParam _ _) _ (sval (Sense1_Param_Subst_proj _ _ ) _ param')).
          exact: (projT2 (sval (Sense1_Param_Subst_proj _ _ ) _ param')).
          abstract (intros; apply: Sense00_Param_SumImage_quotientLogical; simpl; reflexivity).
        }
      * abstract ( move; simpl; intros; apply: Sense00_Param_Subst_quotientLogical; simpl ; first reflexivity;
          apply: Sense00_Param_Sum_quotientLogical; simpl;
            [ rewrite [LHS](proj1 (proj2_sig Sense01_Param_SumSubstF)); reflexivity
            | reflexivity ] ) .
    + abstract (split; simpl; intros; first (by reflexivity);
                simpl; intros; rewrite [RHS](proj2_sig (projT2 param)); symmetry;
                unshelve eapply Sense1_Param_ee_morphism with (Heqparamlocal := eq_refl); simpl;
                apply: Sense00_LocalParam_quotientLogical; simpl;
                exact: polyParametrizator_unitParametrizator) .
  - (*abstract*) (split; simpl; intros G0 param0;
    [ apply: Sense00_Param_Subst_quotientLogical; simpl;
      [ apply: Sense00_LocalParam_quotientLogical; simpl;  do 1 rewrite -unitParametrizator_polyParametrizator; reflexivity
      |  apply: Sense00_Param_Sum_quotientLogical; simpl;
        [  do 1 rewrite -unitParametrizator_polyParametrizator; symmetry; exact: (f_equal (@projT1 _ _) (proj2_sig (projT2 param0)))
        | (*MEMO: this require the first line of the logical part above to be transparent*) reflexivity ]  ]
    | apply: Sense00_Param_Subst_quotientLogical; simpl;
      [ apply: Sense00_LocalParam_quotientLogical; simpl;  do 1 rewrite -unitParametrizator_polyParametrizator; reflexivity
      | rewrite [RHS](proj2_sig (projT2 param0)); simpl;
        congr (sval _ _ _);
        apply: Sense00_LocalParam_quotientLogical; simpl;  do 1 rewrite -unitParametrizator_polyParametrizator; reflexivity ] ] ) .
Defined.

Lemma reparamCongr_Destructing_default_morphism :
  forall (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF) (Sense00_Param_SubstF : obGenerator -> Type)
           (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF) (Sense00_Param_K : obGenerator -> Type)
           (Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
           (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
           (Sense1_Param_ee_morphism : forall (G G' : obGenerator) (p : 'Parametrizator ( Parameter0 G' ~> Parameter0 G )) (paramlocal : Sense00_Param_SumSubstF G) (paramlocal' : Sense00_Param_SumSubstF G')
                                               (Heqparamlocal : paramlocal' = p o>Parametrizator_ paramlocal) (H : obGenerator) (param' : Sense00_LocalParam_ Sense1_Param_subst paramlocal' H)
                                               (param : Sense00_LocalParam_ Sense1_Param_subst paramlocal H),
               param = sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst Heqparamlocal) H param' ->
               sval (Sense1_Param_ee_ G paramlocal) H param = sval (Sense1_Param_ee_ G' paramlocal') H param') (Sense00_Param_E : obGenerator -> Type)
           (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Sense00_Param_KE_ : obGenerator -> Type) (Sense01_Param_KE_ : Sense01_Param_data Sense00_Param_KE_)
           (Sense1_Param_proj_ee'_ : Sense1_Param_data Sense01_Param_KE_ Sense01_Param_K) (Sense1_Param_subst_ee'_ : Sense1_Param_data Sense01_Param_KE_ Sense01_Param_E)
           (Sense00_Param_D : obGenerator -> Type) (Sense01_Param_D : Sense01_Param_data Sense00_Param_D) (Sense00_Param_ED : obGenerator -> Type) (Sense01_Param_ED : Sense01_Param_data Sense00_Param_ED)
           (Sense1_Param_proj_dd : Sense1_Param_data Sense01_Param_ED Sense01_Param_E) (Sense1_Param_subst_dd : Sense1_Param_data Sense01_Param_ED Sense01_Param_D),
      reparamCongr
        (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_dd (Sense1_Destructing_pseudoCode_PParam_default_proj Sense1_Param_ee_morphism Sense1_Param_proj_ee'_)
                                                   (Sense1_Destructing_pseudoCode_PParam_default_subst Sense1_Param_ee_morphism Sense1_Param_proj_ee'_ Sense1_Param_subst_ee'_))
        (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_dd Sense1_Param_subst_dd
                                                    (Sense1_Destructing_pseudoCode_PParam_default_subst Sense1_Param_ee_morphism Sense1_Param_proj_ee'_ Sense1_Param_subst_ee'_))
        (Sense1_Destructing_pseudoCode_PParam_default_proj Sense1_Param_ee_morphism (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_dd Sense1_Param_proj_ee'_ Sense1_Param_subst_ee'_))
        (Sense1_Destructing_pseudoCode_PParam_default_subst Sense1_Param_ee_morphism (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_dd Sense1_Param_proj_ee'_ Sense1_Param_subst_ee'_)
                                                             (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_dd Sense1_Param_subst_dd Sense1_Param_subst_ee'_)).
Proof.
    intros. apply: reparamCongr_Rev; exact: reparamCongr_Assoc_reparam.
Defined.
(** # #
#+END_SRC

** Sense-decodings of form-congruences (conversion) : definitions

#+BEGIN_SRC coq :exports both :results silent # # **)
Section Congr_data.
  Variables   (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
        (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
       (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
        (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
       (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
        (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
        (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
        (Form_ff : pseudoCode Sense1_Form_ff)
        (Sense00_Param_EF' : obGenerator -> Type) (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF') (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
        (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F)
        (Sense1_Form_ff' : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff' Sense1_Param_subst_ff')
        (Form_ff' : pseudoCode Sense1_Form_ff') .

  Variables (Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                                  Sense1_Param_proj_ff' Sense1_Param_subst_ff').

  Record Congr_data : Type :=
  { Congr_data_prop : ( forall (G' : obGenerator) (param' : Sense00_Param_EF G') (param'0 : Sense00_Param_EF' G'),
 forall Heqparam' : param'0 = (sval (sval (fst (sval Sense1_Param_reparam_rr))) G' param'),
 forall (form' : Sense00_AtParam_ Sense1_FormParam_E Sense1_Param_proj_ff param')
   (form'0 : Sense00_AtParam_ Sense1_FormParam_E Sense1_Param_proj_ff' param'0),
 forall Heq : sval form'0 = sval form',
   sval (sval Sense1_Form_ff' G' param'0 form'0) = sval (sval Sense1_Form_ff G' param' form') ) }.

  Definition Congr_data_ALT : Type :=
    forall (G : obGenerator) (param : Sense00_Param_EF G) (form : Sense00_AtParam_ Sense1_FormParam_E Sense1_Param_proj_ff param),
      sval (sval (reparamCongr0_Form (fst (sval Sense1_Param_reparam_rr)) Sense1_Form_ff') G param form)
      = sval (sval Sense1_Form_ff G param form)  .

  Lemma Congr_data_ALT_of_Congr_data : Congr_data -> Congr_data_ALT.
  Proof.
    intros [X]. move. intros. simpl. apply: X; reflexivity.
  Qed.

End Congr_data.
(** # #
#+END_SRC

** Sense-decodings of form-congruences (conversion) : reversibility , reflexivity , transitivity

#+BEGIN_SRC coq :exports both :results silent # # **)
Lemma Congr_Rev :
  forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (Sense00_Param_EF' : obGenerator -> Type) (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF') (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
           (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F)
           (Sense1_Form_ff' : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff' Sense1_Param_subst_ff')
           (Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff' Sense1_Param_subst_ff')
           (Congr_congr_ff : Congr_data Sense1_Form_ff Sense1_Form_ff' Sense1_Param_reparam_rr),
    Congr_data Sense1_Form_ff' Sense1_Form_ff (reparamCongr_Rev Sense1_Param_reparam_rr).
Proof.
  intros. constructor. intros. symmetry. eapply Congr_congr_ff.
  symmetry. subst. simpl. rewrite (proj2 (proj2_sig Sense1_Param_reparam_rr)). reflexivity.
  symmetry. assumption.
Qed.

Lemma Congr_Refl :
    forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff),
      Congr_data Sense1_Form_ff Sense1_Form_ff (reparamCongr_Refl Sense1_Param_proj_ff Sense1_Param_subst_ff).
Proof.
    intros. constructor. intros. subst.
    have Heq' : form'0 = form'. apply: Sense00_AtParam_quotientLogical. assumption.
    subst. reflexivity.
Qed.

Lemma Congr_Trans:
  forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
         (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
         (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
         (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
         (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
         (Sense00_Param_EF' : obGenerator -> Type) (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF') (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
         (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F)
         (Sense1_Form_ff' : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff' Sense1_Param_subst_ff')
         (Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff' Sense1_Param_subst_ff'),
    forall (Congr_congr_ff : Congr_data Sense1_Form_ff Sense1_Form_ff' Sense1_Param_reparam_rr),
    forall (Sense00_Param_EF'' : obGenerator -> Type) (Sense01_Param_EF'' : Sense01_Param_data Sense00_Param_EF'') (Sense1_Param_proj_ff'' : Sense1_Param_data Sense01_Param_EF'' Sense01_Param_E)
           (Sense1_Param_subst_ff'' : Sense1_Param_data Sense01_Param_EF'' Sense01_Param_F)
           (Sense1_Form_ff'' : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff'' Sense1_Param_subst_ff'')
           (Sense1_Param_reparam_rr' : reparamCongr Sense1_Param_proj_ff' Sense1_Param_subst_ff' Sense1_Param_proj_ff'' Sense1_Param_subst_ff''),
    forall (Congr_congr_ff' : Congr_data Sense1_Form_ff' Sense1_Form_ff'' Sense1_Param_reparam_rr'),
      Congr_data Sense1_Form_ff Sense1_Form_ff'' (reparamCongr_Trans Sense1_Param_reparam_rr Sense1_Param_reparam_rr').
Proof.
  intros. constructor; intros.
  rewrite -(Congr_data_ALT_of_Congr_data Congr_congr_ff) ; simpl.
  rewrite -(Congr_data_ALT_of_Congr_data Congr_congr_ff') ; simpl.
  apply: (proj2 (proj2_sig Sense1_Form_ff'')); assumption.
Qed.
(** # #
#+END_SRC

** Sense-decodings of form-congruences (conversion) : (Compos-)composition-monoidal associativity

#+BEGIN_SRC coq :exports both :results silent # # **)
Lemma congr_Compos_cong : forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
                   (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (Sense00_Form_F' : obGenerator -> Type) (Sense01_Form_F' : Sense01_data Sense00_Form_F')
                   (Sense00_Param_F' : obGenerator -> Type) (Sense01_Param_F' : Sense01_Param_data Sense00_Param_F') (Sense1_FormParam_F' : Sense1_FormParam_data Sense01_Form_F' Sense01_Param_F')
                   (Sense00_Param_F'F : obGenerator -> Type) (Sense01_Param_F'F : Sense01_Param_data Sense00_Param_F'F) (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F')
                   (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F)
                   (Sense1_Form_ff' : Sense1_Form_data Sense1_FormParam_F' Sense1_FormParam_F Sense1_Param_proj_ff' Sense1_Param_subst_ff') (Sense00_Form_F'' : obGenerator -> Type)
                   (Sense01_Form_F'' : Sense01_data Sense00_Form_F'') (Sense00_Param_F'' : obGenerator -> Type) (Sense01_Param_F'' : Sense01_Param_data Sense00_Param_F'')
                   (Sense1_FormParam_F'' : Sense1_FormParam_data Sense01_Form_F'' Sense01_Param_F'') (Sense00_Param_F''F' : obGenerator -> Type) (Sense01_Param_F''F' : Sense01_Param_data Sense00_Param_F''F')
                   (Sense1_Param_proj_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F'') (Sense1_Param_subst_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F')
                   (Sense1_Form_ff_ : Sense1_Form_data Sense1_FormParam_F'' Sense1_FormParam_F' Sense1_Param_proj_ff_ Sense1_Param_subst_ff_) (Sense00_Param_E'E : obGenerator -> Type)
                   (Sense01_Param_E'E : Sense01_Param_data Sense00_Param_E'E) (Sense1_Param_proj_ee' : Sense1_Param_data Sense01_Param_E'E Sense01_Param_F')
                   (Sense1_Param_subst_ee' : Sense1_Param_data Sense01_Param_E'E Sense01_Param_F)
                   (Sense1_Form_ee' : Sense1_Form_data Sense1_FormParam_F' Sense1_FormParam_F Sense1_Param_proj_ee' Sense1_Param_subst_ee')
                   (Sense1_Param_reparam_F'F : reparamCongr Sense1_Param_proj_ff' Sense1_Param_subst_ff' Sense1_Param_proj_ee' Sense1_Param_subst_ee')
                   (Congr_congr_ff' : Congr_data Sense1_Form_ff' Sense1_Form_ee' Sense1_Param_reparam_F'F),
              forall (Sense00_Param_E''E' : obGenerator -> Type) (Sense01_Param_E''E' : Sense01_Param_data Sense00_Param_E''E') (Sense1_Param_proj_ee_ : Sense1_Param_data Sense01_Param_E''E' Sense01_Param_F'')
                     (Sense1_Param_subst_ee_ : Sense1_Param_data Sense01_Param_E''E' Sense01_Param_F')
                     (Sense1_Form_ee_ : Sense1_Form_data Sense1_FormParam_F'' Sense1_FormParam_F' Sense1_Param_proj_ee_ Sense1_Param_subst_ee_)
                     (Sense1_Param_reparam_F''F' : reparamCongr Sense1_Param_proj_ff_ Sense1_Param_subst_ff_ Sense1_Param_proj_ee_ Sense1_Param_subst_ee_)
                     (Congr_congr_ff_ : Congr_data Sense1_Form_ff_ Sense1_Form_ee_ Sense1_Param_reparam_F''F'),
                Congr_data (Sense1_Form_Compos Sense1_Form_ff' Sense1_Form_ff_) (Sense1_Form_Compos Sense1_Form_ee' Sense1_Form_ee_)
                          (reparamCongr_Compos_pseudoCode_PParam_cong Sense1_Param_reparam_F'F Sense1_Param_reparam_F''F').
Proof.
  intros; constructor; intros; simpl.
  apply: (Congr_data_prop Congr_congr_ff'); first by rewrite Heqparam'; simpl; reflexivity.
  simpl. apply: (Congr_data_prop Congr_congr_ff_); first by rewrite Heqparam'; simpl; reflexivity.
  exact: Heq.
Qed.

Lemma Congr_Assoc_congrPseudoCode
: forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (Sense00_Form_D : obGenerator -> Type) (Sense01_Form_D : Sense01_data Sense00_Form_D) (Sense00_Param_D : obGenerator -> Type) (Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
           (Sense1_FormParam_D : Sense1_FormParam_data Sense01_Form_D Sense01_Param_D) (Sense00_Param_DE : obGenerator -> Type) (Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
           (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D) (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
           (Sense1_Form_ee : Sense1_Form_data Sense1_FormParam_D Sense1_FormParam_E Sense1_Param_proj_ee Sense1_Param_subst_ee) (Sense00_Form_C : obGenerator -> Type)
           (Sense01_Form_C : Sense01_data Sense00_Form_C) (Sense00_Param_C : obGenerator -> Type) (Sense01_Param_C : Sense01_Param_data Sense00_Param_C)
           (Sense1_FormParam_C : Sense1_FormParam_data Sense01_Form_C Sense01_Param_C) (Sense00_Param_CD : obGenerator -> Type) (Sense01_Param_CD : Sense01_Param_data Sense00_Param_CD)
           (Sense1_Param_proj_dd : Sense1_Param_data Sense01_Param_CD Sense01_Param_C) (Sense1_Param_subst_dd : Sense1_Param_data Sense01_Param_CD Sense01_Param_D)
           (Sense1_Form_dd : Sense1_Form_data Sense1_FormParam_C Sense1_FormParam_D Sense1_Param_proj_dd Sense1_Param_subst_dd),
      Congr_data (Sense1_Form_Compos (Sense1_Form_Compos Sense1_Form_ff Sense1_Form_ee) Sense1_Form_dd)
                 (Sense1_Form_Compos Sense1_Form_ff (Sense1_Form_Compos Sense1_Form_ee Sense1_Form_dd))
                 (reparamCongr_Assoc_reparam Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ee Sense1_Param_subst_ee Sense1_Param_proj_dd Sense1_Param_subst_dd).
Proof.
    intros; constructor; intros; simpl; apply: (proj2 (proj2_sig  Sense1_Form_ff)); first (by subst; reflexivity);
  simpl; apply: (proj2 (proj2_sig  Sense1_Form_ee)); first (by subst; reflexivity);
  simpl; apply: (proj2 (proj2_sig  Sense1_Form_dd)); first (by subst; reflexivity); assumption.
Qed.
(** # #
#+END_SRC

** Sense-decodings of form-congruences (conversion) : etc ...

#+BEGIN_SRC coq :exports both :results silent # # **)
Lemma ViewMor_cong_Heqparam : forall (G H : obGenerator) (g g' : 'Generator( G ~> H )) (Heqparam : g' = g),
    Parameter1 g' = Parameter1 (sval (unitGenerator_reparamCongrGenerator G)).1 o>Parametrizator Parameter1 g .
Proof.
  intros. rewrite -Parameter_unitGenerator. rewrite -polyParametrizator_unitParametrizator. rewrite Heqparam. reflexivity.
Qed.

Lemma Congr_ViewMor_cong :
  forall (G H : obGenerator) (g g' : 'Generator( G ~> H )),
  forall (Heqparam : g' = g),
    Congr_data (Sense1_Form_ViewMor' g) (Sense1_Form_ViewMor' g') (reparamCongr_ViewMor_PParam_cong (ViewMor_cong_Heqparam Heqparam) (inFibre_transformation_morphism' (InFibre G))) .
Proof.
  intros; constructor; intros; simpl.  subst. congr ( _ _ ). assumption.
Qed.

Lemma Congr_Constructing_default_cong
     : forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
         (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)  (Sense00_Param_SumSubstF : obGenerator -> Type)
         (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
         (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
         (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
         (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
         (G : obGenerator) (param : Sense00_Param_SubstF G)
         (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param) (param' : Sense00_Param_SubstF G) (form' : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param')
         (Heqparam : param' = param)
         (Heqform : sval form' = sval form),
    Congr_data (Sense1_Form_Constructing_default Sense1_Param_subst form) (Sense1_Form_Constructing_default Sense1_Param_subst form')
                   (reparamCongr_Constructing_PParam_default_cong Sense1_Param_subst (f_equal (sval Sense1_Param_subst G) Heqparam) (erefl (fst (sval (InFibre G))))).
Proof.
  intros. constructor. intros. apply: Sense00_Form_SumSubst_quotientLogical; simpl.
  - reflexivity.
  - subst. congr ((Parameter1  _) o>Parametrizator_ _). assumption.
  - congr ( _ o>Generator_ _ ); assumption.
Qed.

Lemma Congr_Destructing_default_cong''' :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_K : obGenerator -> Type)
    (Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
    (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
    (Sense1_Param_ee_morphism : forall (G G' : obGenerator) (p : 'Parametrizator ( Parameter0 G' ~> Parameter0 G )) (paramlocal : Sense00_Param_SumSubstF G) (paramlocal' : Sense00_Param_SumSubstF G')
                                (Heqparamlocal : paramlocal' = p o>Parametrizator_ paramlocal) (H : obGenerator) (param' : Sense00_LocalParam_ Sense1_Param_subst paramlocal' H)
                                (param : Sense00_LocalParam_ Sense1_Param_subst paramlocal H),
                              param = sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst Heqparamlocal) H param' -> sval (Sense1_Param_ee_ G paramlocal) H param = sval (Sense1_Param_ee_ G' paramlocal') H param')
    (Sense00_Form_K : obGenerator -> Type)
    (Sense01_Form_K : Sense01_data Sense00_Form_K)
    (Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)
    (Sense1_Form_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
                      Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                        (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
    (Sense1_Form_ee_morphism : forall (G G' : obGenerator) (g : 'Generator( G' ~> G )) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
                               (G'' : obGenerator) (paramm : Sense00_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G' (Parameter1 g o>Parametrizator_ param)) G'')
                               (formm : 'Generator ( G'' ~> G' @_ Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G' (Parameter1 g o>Parametrizator_ param)) (InFibre G') <| paramm )),
                             let paramm' := sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst (eq_sym (proj2_sig Sense1_Param_subst G G' (Parameter1 g) param))) G'' paramm in
                             let formm' := (Sense01_AtParam_transp'' (Form_morphism_Heq paramm) (formm o>GeneratorAtParam g)) in
                             sval (sval (Sense1_Form_ee__ G param form) G'' paramm' formm') =
                             sval (sval (Sense1_Form_ee__ G' (Parameter1 g o>Parametrizator_ param) (g o>GeneratorAtParam_ form)) G'' paramm formm))
    (Sense1_Param_dd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
    (Sense1_Param_dd_morphism : forall (G G' : obGenerator) (p : 'Parametrizator ( Parameter0 G' ~> Parameter0 G )) (paramlocal : Sense00_Param_SumSubstF G) (paramlocal' : Sense00_Param_SumSubstF G')
                                (Heqparamlocal : paramlocal' = p o>Parametrizator_ paramlocal) (H : obGenerator) (param' : Sense00_LocalParam_ Sense1_Param_subst paramlocal' H)
                                (param : Sense00_LocalParam_ Sense1_Param_subst paramlocal H),
                              param = sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst Heqparamlocal) H param' -> sval (Sense1_Param_dd_ G paramlocal) H param = sval (Sense1_Param_dd_ G' paramlocal') H param')
    (Sense1_Form_dd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
                      Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                        (Sense1_Param_dd_ G (sval Sense1_Param_subst G param)))
    (Sense1_Form_dd_morphism : forall (G G' : obGenerator) (g : 'Generator( G' ~> G )) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
                               (G'' : obGenerator) (paramm : Sense00_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G' (Parameter1 g o>Parametrizator_ param)) G'')
                               (formm : 'Generator ( G'' ~> G' @_ Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G' (Parameter1 g o>Parametrizator_ param)) (InFibre G') <| paramm )),
                             let paramm' := sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst (eq_sym (proj2_sig Sense1_Param_subst G G' (Parameter1 g) param))) G'' paramm in
                             let formm' := (Sense01_AtParam_transp'' (Form_morphism_Heq paramm) (formm o>GeneratorAtParam g)) in
                             sval (sval (Sense1_Form_dd__ G param form) G'' paramm' formm') =
                             sval (sval (Sense1_Form_dd__ G' (Parameter1 g o>Parametrizator_ param) (g o>GeneratorAtParam_ form)) G'' paramm formm))
    (Sense1_Param_reparam_eedd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G) (P : obParametrizator) (inFibre_P : inFibre G P),
                                reparamCongr (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal)
                                              (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_dd_ G paramlocal))
    (Congr_congr_eedd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
                       Congr_data (Sense1_Form_ee__ G param form) (Sense1_Form_dd__ G param form) (Sense1_Param_reparam_eedd_ G (sval Sense1_Param_subst G param) _ (InFibre G))),
  Congr_data (Sense1_Form_Destructing_default Sense1_Param_ee_morphism Sense1_Form_ee_morphism)
    (Sense1_Form_Destructing_default Sense1_Param_dd_morphism Sense1_Form_dd_morphism)
    (reparamCongr_Destructing_pseudoCode_PParam_default_cong Sense1_Param_ee_morphism Sense1_Param_dd_morphism Sense1_Param_reparam_eedd_).
Proof.
  intros. constructor. intros. simpl.
  set parammm_for_dd : Sense00_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G' (sval (projT1 (projT2 (sval form'0))))) G'
      := (X in sval (sval (Sense1_Form_dd__ _ _ _) _ X _) = _)  .
  set formmm_for_dd : 'Generator ( G' ~> G' @_ Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G' (sval (projT1 (projT2 (sval form'0))))) (InFibre G') <| parammm_for_dd )
      := (X in sval (sval (Sense1_Form_dd__ _ _ _) _ _ X) = _).
  set parammm_for_ee : Sense00_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G' (sval (projT1 (projT2 (sval form'))))) G'
    := (X in _ = sval (sval (Sense1_Form_ee__ _ _ _) _ X _)) .
  set formmm_for_ee : 'Generator ( G' ~> G' @_ Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G' (sval (projT1 (projT2 (sval form'))))) (InFibre G') <| parammm_for_ee )
    := (X in _ = sval (sval (Sense1_Form_ee__ _ _ _) _ _ X)).

  remember (sval (projT1 (projT2 (sval form')))) as paramm eqn:Heqparamm in |- ; symmetry in Heqparamm.
  remember (Sense01_AtParam_transp' Heqparamm (projT2 (projT2 (sval form')))) as formm eqn:Heqformm in |- ; symmetry in Heqformm.
  have {Heqformm} Heqformm := (f_equal sval Heqformm).
  have Heqparamm0 : sval (projT1 (projT2 (sval form'0))) = paramm by rewrite Heq; exact: Heqparamm.
  have Heqformm0 : Sense01_AtParam_transp' Heqparamm0 (projT2 (projT2 (sval form'0))) = formm
    by apply: Sense00_AtParam_quotientLogical; simpl; rewrite Heq; exact: Heqformm.
  have {Heqformm0} Heqformm0 := (f_equal sval Heqformm0).
  rewrite [RHS](Sense1_Form_Destructing_default_quotientLogical Sense1_Form_ee__ Heqparamm Heqformm
              (Sense01_LocalParam_transpP (f_equal (sval Sense1_Param_subst _) Heqparamm) parammm_for_ee) (Sense01_AtParam_transp'P (eq_refl _) _)).
  rewrite [LHS](Sense1_Form_Destructing_default_quotientLogical Sense1_Form_dd__ Heqparamm0 Heqformm0
              (Sense01_LocalParam_transpP (f_equal (sval Sense1_Param_subst _) Heqparamm0) parammm_for_dd) (Sense01_AtParam_transp'P (eq_refl _) _)).

  set parammm_for'_dd := (X in sval (sval (Sense1_Form_dd__ _ _ _ ) _ X _) = _) .
  set formmm_for'_dd := (X in sval (sval (Sense1_Form_dd__ _ _ _) _ _ X) = _) .
  set parammm_for'_ee := (X in _ = sval (sval (Sense1_Form_ee__ _ _ _ ) _ X _) ) .
  set formmm_for'_ee := (X in _ = sval (sval (Sense1_Form_ee__ _ _ _) _ _ X) ) .

  apply (Congr_data_prop (Congr_congr_eedd__ _ _ _)); last reflexivity.
  apply: Sense00_LocalParam_quotientLogical.
  rewrite [LHS]unitParametrizator_polyParametrizator;
  rewrite -[in LHS](proj1 (proj2_sig (InFibre G'))); rewrite [LHS]polyParametrizator_morphism.
  rewrite [RHS]unitParametrizator_polyParametrizator;
  rewrite -[in RHS](proj1 (proj2_sig (InFibre G'))); rewrite [RHS]polyParametrizator_morphism;
  congr ( _ o>Parametrizator _).
  rewrite [RHS](proj1 (proj2_sig (fst (sval (Sense1_Param_reparam_eedd_ _ _ _ _ ))))). rewrite [RHS]/=.
  simpl. reflexivity.
Qed.

Lemma Congr_Forget_cong:
    forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
           (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
           (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF) (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
           (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
           (Sense00_Param_FE : obGenerator -> Type) (Sense01_Param_FE : Sense01_Param_data Sense00_Param_FE) (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_F)
           (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_E) (Sense1_Form_ee : Sense1_Form_data Sense1_FormParam_F Sense1_FormParam_E Sense1_Param_proj_ee Sense1_Param_subst_ee)
           (Sense00_Param_FE0 : obGenerator -> Type) (Sense01_Param_FE0 : Sense01_Param_data Sense00_Param_FE0) (Sense1_Param_proj_ee0 : Sense1_Param_data Sense01_Param_FE0 Sense01_Param_F)
           (Sense1_Param_subst_ee0 : Sense1_Param_data Sense01_Param_FE0 Sense01_Param_E)
           (Sense1_Form_ee0 : Sense1_Form_data Sense1_FormParam_F Sense1_FormParam_E Sense1_Param_proj_ee0 Sense1_Param_subst_ee0)
           (Sense1_Param_reparam_conv_ee : reparamCongr Sense1_Param_proj_ee Sense1_Param_subst_ee Sense1_Param_proj_ee0 Sense1_Param_subst_ee0),
      forall (Congr_congr_ee : Congr_data Sense1_Form_ee Sense1_Form_ee0 Sense1_Param_reparam_conv_ee),
      Congr_data (Sense1_Form_Compos Sense1_Form_ee (Sense1_Form_Forget Sense1_FormParam_F Sense1_Param_subst Sense1_Param_proj))
                      (Sense1_Form_Compos Sense1_Form_ee0 (Sense1_Form_Forget Sense1_FormParam_F Sense1_Param_subst Sense1_Param_proj))
                      (reparamCongr_Compos_pseudoCode_PParam_cong Sense1_Param_reparam_conv_ee (reparamCongr_Refl Sense1_Param_proj Sense1_Param_subst)).
Proof.
  intros; constructor; intros; simpl. apply: (Congr_data_prop Congr_congr_ee); first by rewrite Heqparam'; simpl; reflexivity.
  simpl. apply: Sense00_Form_PiSubst_quotientLogical_rev.
  + exact: Heq.
  + simpl. rewrite Heqparam'. simpl. reflexivity.
Qed.

Lemma Congr_Remember_cong' :
    forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
           (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
           (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF) (Sense00_Form_LF : obGenerator -> Type) (Sense01_Form_LF : Sense01_data Sense00_Form_LF)
           (Sense1_FormParam_LF : Sense1_FormParam_data Sense01_Form_LF Sense01_Param_PiSubstF)
           (Sense1_Form_ll' Sense1_Form_ll'0 : Sense1_Form_data Sense1_FormParam_LF Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst),
    forall (Congr_congr_ll'll'0 : Congr_data Sense1_Form_ll' Sense1_Form_ll'0 (reparamCongr_Refl Sense1_Param_proj Sense1_Param_subst)),
      Congr_data (Sense1_Form_Remember (Sense1_Form_Compos Sense1_Form_ll' (Sense1_Unit Sense1_FormParam_LF)))
                 (Sense1_Form_Remember (Sense1_Form_Compos Sense1_Form_ll'0 (Sense1_Unit Sense1_FormParam_LF)))
                 (reparamCongr_Refl (Sense1_Unit_Param Sense01_Param_PiSubstF) (Sense1_Unit_Param Sense01_Param_PiSubstF)).
Proof.
  intros; constructor; intros; apply: Sense00_Form_PiSubst_quotientLogical_ALT; simpl; intros.
  rewrite -[RHS](Congr_data_ALT_of_Congr_data (Congr_congr_ll'll'0))  [RHS]/=.
  apply: (proj2 (proj2_sig Sense1_Form_ll'0)); simpl.
  - assumption.
  - simpl; congr ( _ _ ); assumption.
Qed.

Lemma reparamCongr_Formatting_cong:
  forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
         (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
         (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
         (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
         (Sense1_Param_subst : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
          (Sense00_Param_EF0 : obGenerator -> Type)
         (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0) (Sense1_Param_proj0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
         (Sense1_Param_subst0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F) (Sense1_Form_ff0 : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj0 Sense1_Param_subst0)
         (Sense1_Param_reparam_conv_ff : reparamCongr Sense1_Param_proj Sense1_Param_subst Sense1_Param_proj0 Sense1_Param_subst0),
  forall (Congr_congr_ff : Congr_data Sense1_Form_ff Sense1_Form_ff0 Sense1_Param_reparam_conv_ff),
reparamCongr (Sense1_Param_Format (Sense1_Param_of_Sense1_FormParam Sense1_FormParam_E) Sense1_Param_proj) (Sense1_Param_Format_subst Sense1_Form_ff)
    (Sense1_Param_Format (Sense1_Param_of_Sense1_FormParam Sense1_FormParam_E) Sense1_Param_proj0) (Sense1_Param_Format_subst Sense1_Form_ff0).
Proof.
unshelve eexists. split.
  - unshelve eexists.
    + unshelve eexists. intros G param_form.
      exists ( sval (sval (fst (sval Sense1_Param_reparam_conv_ff))) _ (projT1 param_form)).
      * exists (sval (projT2 param_form)).
        abstract (simpl; rewrite [LHS](proj2_sig (projT2 param_form));  simpl; rewrite [RHS](proj1 (proj2_sig (fst (sval Sense1_Param_reparam_conv_ff)))); reflexivity).
      *  abstract (move; intros;  simpl; apply: Sense00_Param_Format_quotientLogical; simpl;
                   [exact: (proj2_sig (sval (fst (sval Sense1_Param_reparam_conv_ff)))) | reflexivity ]).
    + abstract (split; [ intros G param_format; simpl; exact: (proj1 (proj2_sig (fst (sval Sense1_Param_reparam_conv_ff))))
             | intros G param_format; apply: Sense00_Param_Format_quotientLogical; simpl;
               [ exact: (proj2 (proj2_sig (fst (sval Sense1_Param_reparam_conv_ff))))
               | simpl; apply: (Congr_data_prop Congr_congr_ff); reflexivity ] ] ) .
  - unshelve eexists.
    + unshelve eexists. intros G param_form.
      exists ( sval (sval (snd (sval Sense1_Param_reparam_conv_ff))) _ (projT1 param_form)).
      * exists (sval (projT2 param_form)).
        abstract (simpl; rewrite [LHS](proj2_sig (projT2 param_form));  simpl; rewrite [RHS](proj1 (proj2_sig (snd (sval Sense1_Param_reparam_conv_ff)))); reflexivity).
      *  abstract (move; intros;  simpl; apply: Sense00_Param_Format_quotientLogical; simpl;
                   [exact: (proj2_sig (sval (snd (sval Sense1_Param_reparam_conv_ff)))) | reflexivity ]).
    + abstract (split; [ intros G param_format; simpl; exact: (proj1 (proj2_sig (snd (sval Sense1_Param_reparam_conv_ff))))
             | intros G param_format; apply: Sense00_Param_Format_quotientLogical; simpl;
               [ exact: (proj2 (proj2_sig (snd (sval Sense1_Param_reparam_conv_ff))))
               | simpl; symmetry; apply: (Congr_data_prop Congr_congr_ff) ;
                 [ rewrite (proj2 (proj2_sig Sense1_Param_reparam_conv_ff)); reflexivity
                 | reflexivity ] ] ] ) .
  - abstract (split; intros;
      [ apply: Sense00_Param_Format_quotientLogical; simpl;
        [  rewrite (proj1 (proj2_sig Sense1_Param_reparam_conv_ff)); reflexivity | reflexivity ]
      | apply: Sense00_Param_Format_quotientLogical; simpl;
        [  rewrite (proj2 (proj2_sig Sense1_Param_reparam_conv_ff)); reflexivity | reflexivity ] ] ).
Defined.

Lemma Congr_morCoMod_comp_Unit
: forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff),
      Congr_data (Sense1_Form_Compos (Sense1_Unit Sense1_FormParam_F) Sense1_Form_ff) Sense1_Form_ff (reparamCongr_morCoMod_comp_Unit Sense1_Param_proj_ff Sense1_Param_subst_ff).
Proof.
  intros. constructor. intros. subst.
  have Heq' : form'0 = form'. apply: Sense00_AtParam_quotientLogical. assumption.
  subst. reflexivity.
Qed.

Lemma Congr_Unit_comp_morCoMod
: forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff),
      Congr_data (Sense1_Form_Compos Sense1_Form_ff (Sense1_Unit Sense1_FormParam_E)) Sense1_Form_ff (reparamCongr_Unit_comp_morCoMod Sense1_Param_proj_ff Sense1_Param_subst_ff).
Proof.
  intros. constructor. intros. subst. simpl in *.
  apply: (proj2 (proj2_sig Sense1_Form_ff)).
  - reflexivity.
  - simpl. assumption.
Qed.

Lemma reparamCongr_Heqparam_ViewMor_comp_ViewMor :
  forall (G H : obGenerator) (g : 'Generator( G ~> H )) (G' : obGenerator) (g' : 'Generator( G' ~> G )),
    Parameter1 (g' o>Generator g) = Parameter1 (sval (unitGenerator_reparamCongrGenerator G')).1 o>Parametrizator (inFibre_transp_codom (InFibre G) (Parameter1 g') o>Parametrizator Parameter1 g).
Proof.
  intros G H g G' g'.
  simpl. rewrite Parameter_morphism. rewrite -Parameter_unitGenerator.
  rewrite -polyParametrizator_unitParametrizator.
  rewrite -[X in _ = X o>Parametrizator _]unitParametrizator_polyParametrizator. reflexivity.
Qed.

Lemma Congr_ViewMor_comp_ViewMor'
     : forall (G H : obGenerator) (g : 'Generator( G ~> H )) (G' : obGenerator) (g' : 'Generator( G' ~> G )),
    Congr_data (Sense1_Form_Compos (Sense1_Form_ViewMor' g) (Sense1_Form_ViewMor' g')) (Sense1_Form_ViewMor' (g' o>Generator g))
               (reparamCongr_Trans (reparamCongr_ViewMor_PParam_comp_ViewMor_PParam (Parameter1 g) (InFibre G) (Parameter1 g') (InFibre G'))
   (reparamCongr_ViewMor_PParam_cong (reparamCongr_Heqparam_ViewMor_comp_ViewMor g g') (inFibre_transformation_morphism' (InFibre G')))) .
Proof.
  intros. constructor. intros. simpl. rewrite polyGenerator_morphism. do 2 congr (_ _). assumption.
Qed.

Lemma ViewMor_comp_Constructing_default_Heq :
    forall (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF) (Sense00_Param_SubstF : obGenerator -> Type)
           (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF) (G : obGenerator)
           (param : Sense00_Param_SubstF G) (G' : obGenerator) (g : 'Generator( G' ~> G )),
    sval Sense1_Param_subst G' (Parameter1 g o>Parametrizator_[sval Sense01_Param_SubstF] param) = inFibre_transp_codom (InFibre G) (Parameter1 g) o>Parametrizator_[sval Sense01_Param_SumSubstF] sval Sense1_Param_subst G param .
Proof.
  intros. rewrite -[X in _ = X o>Parametrizator_ _]unitParametrizator_polyParametrizator. rewrite (proj2_sig Sense1_Param_subst). reflexivity.
Qed.

Lemma Congr_ViewMor_comp_Constructing_default :
    forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
           (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
           (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F) (G : obGenerator) (param : Sense00_Param_SubstF G)
           (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param) (G' : obGenerator) (g : 'Generator( G' ~> G )),
      Congr_data (Sense1_Form_Compos (Sense1_Form_Constructing_default Sense1_Param_subst form) (Sense1_Form_ViewMor' g)) (Sense1_Form_Constructing_default Sense1_Param_subst (g o>GeneratorAtParam_[sval (Sense01_AtParam_(Sense1_FormParam_F) _)] form))
                 (reparamCongr_Trans (reparamRev_ViewMor_PParam_comp_Constructing_PParam_default Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G) (Parameter1 g) (InFibre G'))
                                      (reparamCongr_Constructing_PParam_default_cong Sense1_Param_subst
                   (ViewMor_comp_Constructing_default_Heq _ _ _)
                   (erefl (fst (sval ((InFibre G'))))))).
Proof.
  intros. constructor. intros. apply: Sense00_Form_SumSubst_quotientLogical; simpl.
  - reflexivity.
  - rewrite (proj1 (proj2_sig Sense01_Param_SubstF)). rewrite -Parameter_morphism.  congr ((Parameter1 ( _ o>Generator _)) o>Parametrizator_ _). assumption.
  - rewrite (proj1 (proj2_sig Sense01_Form_F)). congr ( ( _ o>Generator _) o>Generator_ _). assumption.
Qed.

Lemma Congr_Constructing_default_comp_Destructing_default' :
forall (  Sense00_Form_F : obGenerator -> Type)
  (Sense01_Form_F : Sense01_data Sense00_Form_F)
  (Sense00_Param_F : obGenerator -> Type)
  (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
  (Sense00_Param_SumSubstF : obGenerator -> Type)
  (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
  (Sense00_Param_SubstF : obGenerator -> Type)
  (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
  (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
  (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
  (Sense00_Param_K : obGenerator -> Type)
  (Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
  (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
  (Sense1_Param_ee_morphism : forall (G G' : obGenerator) (p : 'Parametrizator ( Parameter0 G' ~> Parameter0 G )) (paramlocal : Sense00_Param_SumSubstF G) (paramlocal' : Sense00_Param_SumSubstF G')
                                (Heqparamlocal : paramlocal' = p o>Parametrizator_ paramlocal) (H : obGenerator) (param' : Sense00_LocalParam_ Sense1_Param_subst paramlocal' H)
                                (param : Sense00_LocalParam_ Sense1_Param_subst paramlocal H),
                              param = sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst Heqparamlocal) H param' -> sval (Sense1_Param_ee_ G paramlocal) H param = sval (Sense1_Param_ee_ G' paramlocal') H param')
  (Sense00_Form_K : obGenerator -> Type)
  (Sense01_Form_K : Sense01_data Sense00_Form_K)
  (Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)
  (Sense1_Form_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
                      Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                        (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
  (Sense1_Form_ee_morphism : forall (G G' : obGenerator) (g : 'Generator( G' ~> G )) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
                               (G'' : obGenerator) (paramm : Sense00_LocalParam_ Sense1_Param_subst (sval Sense1_Param_subst G' (Parameter1 g o>Parametrizator_ param)) G'')
                               (formm : 'Generator ( G'' ~> G' @_ Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G' (Parameter1 g o>Parametrizator_ param)) (InFibre G') <| paramm )),
                             let paramm' := sval (Sense01_LocalParam_postcomposition' Sense1_Param_subst (eq_sym (proj2_sig Sense1_Param_subst G G' (Parameter1 g) param))) G'' paramm in
                             let formm' := (Sense01_AtParam_transp'' (Form_morphism_Heq paramm) (formm o>GeneratorAtParam g)) in
                             sval (sval (Sense1_Form_ee__ G param form) G'' paramm' formm') =
                             sval (sval (Sense1_Form_ee__ G' (Parameter1 g o>Parametrizator_ param) (g o>GeneratorAtParam_ form)) G'' paramm formm))
  (G : obGenerator)
  (param : Sense00_Param_SubstF G)
  (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
  Congr_data
    (Sense1_Form_Compos (Sense1_Form_Destructing_default Sense1_Param_ee_morphism Sense1_Form_ee_morphism) (Sense1_Form_Constructing_default Sense1_Param_subst form))
    (Sense1_Form_Compos (Sense1_Unit Sense1_FormParam_K) (Sense1_Form_ee__ G param form))
    (reparamCongr_Trans (reparamCongr_Constructing_PParam_default_comp_Destructing_PParam_default Sense1_Param_ee_morphism (sval Sense1_Param_subst G param) (InFibre G))
       (reparamCongr_Compos_pseudoCode_PParam_cong (reparamCongr_Refl (Sense1_Unit_Param Sense01_Param_K) (Sense1_Unit_Param Sense01_Param_K)) (reparamCongr_Refl _ _ ) )) .
Proof.
  intros; constructor; intros;  simpl.
  rewrite -[RHS]Sense1_Form_ee_morphism [RHS]/=.
  apply: (Sense1_Form_Destructing_default_quotientLogical Sense1_Form_ee__); simpl;
    [ reflexivity | reflexivity
      | | rewrite -polyGenerator_unitGenerator; assumption ].
  rewrite Heqparam'. simpl.
  rewrite -[RHS]polyParametrizator_unitParametrizator.
  rewrite -[in RHS]Heq. rewrite [RHS](proj2_sig form'0).  rewrite Heqparam'; simpl.
  do 2 rewrite -unitParametrizator_polyParametrizator. reflexivity.
Qed.

Lemma Congr_Remember_comp_Forget :
    forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
           (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
           (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF) (Sense00_Form_LF : obGenerator -> Type) (Sense01_Form_LF : Sense01_data Sense00_Form_LF)
           (Sense1_FormParam_LF : Sense1_FormParam_data Sense01_Form_LF Sense01_Param_PiSubstF)
           (Sense1_Form_ll' : Sense1_Form_data Sense1_FormParam_LF Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst),
      Congr_data
        (Sense1_Form_Compos (Sense1_Form_Forget Sense1_FormParam_F Sense1_Param_subst Sense1_Param_proj)
                                (Sense1_Form_Remember (Sense1_Form_Compos Sense1_Form_ll' (Sense1_Unit Sense1_FormParam_LF)))) Sense1_Form_ll'
        (reparamCongr_Unit_comp_morCoMod Sense1_Param_proj Sense1_Param_subst).
Proof.
  intros; constructor; intros; simpl. apply: (proj2 (proj2_sig Sense1_Form_ll')); simpl.
  - assumption.
  - rewrite -(proj2 (proj2_sig Sense01_Form_LF)). assumption.
Qed.
(** # #
#+END_SRC

** Pseudocodes of the parameter-congruences (reparametrization) with Pseudocodes of the form-congruences (conversion)

#+BEGIN_SRC coq :exports both :results silent # # **)
Reserved Notation "''CoMod_$' (  Param_EF  ~>  Param_EF0  @_  Sense1_Param_reparam_rr  )" (at level 0).
Reserved Notation "''CoMod$' (  Form_ff  ~>  Form_ff'  @_  Congr_congr_ff  )" (at level 0).

(**TODO: is  at least Refl_congrPseudoCode Trans_congrPseudoCode  Assoc_congrPseudoCode  uniform in use of codes ? maximumal use of codes or minimumal use of codes ... for now it is not uniform *)

Inductive congrPseudoCode_PParam : forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E),
 forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
 forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
 forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
 forall (Param_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0) ,
 forall Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E,
 forall Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F,
 forall (Param_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0),
 forall Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                            Sense1_Param_proj_ff0 Sense1_Param_subst_ff0, Type :=
| Refl_reparam :
forall (Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense00_Param_EF : obGenerator -> Type)
(Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
(Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E )
(Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
(Param_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
  'CoMod_$( Param_EF ~> Param_EF
                     @_ reparamCongr_Refl Sense1_Param_proj_ff Sense1_Param_subst_ff )

| Trans_reparam : forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E),
 forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
 forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
 forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
 forall (Param_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0),
 forall Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E,
 forall Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F,
 forall (Param_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0),
 forall Sense1_Param_reparam_rr0 : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                          Sense1_Param_proj_ff0 Sense1_Param_subst_ff0,
 forall (reparam_rr0 : 'CoMod_$(  Param_EF  ~>  Param_EF0  @_  Sense1_Param_reparam_rr0 ) ) ,
 forall Sense00_Param_EF1 (Sense01_Param_EF1 : Sense01_Param_data Sense00_Param_EF1),
 forall Sense1_Param_proj_ff1 : Sense1_Param_data Sense01_Param_EF1 Sense01_Param_E,
 forall Sense1_Param_subst_ff1 : Sense1_Param_data Sense01_Param_EF1 Sense01_Param_F,
 forall (Param_EF1 : pseudoCode_PParam Sense1_Param_proj_ff1 Sense1_Param_subst_ff1),
 forall Sense1_Param_reparam_rr1 : reparamCongr Sense1_Param_proj_ff0 Sense1_Param_subst_ff0
                                          Sense1_Param_proj_ff1 Sense1_Param_subst_ff1,
 forall (reparam_rr1 : 'CoMod_$(  Param_EF0  ~>  Param_EF1  @_  Sense1_Param_reparam_rr1 ) ),

   'CoMod_$( Param_EF ~> Param_EF1
             @_ reparamCongr_Trans Sense1_Param_reparam_rr0 Sense1_Param_reparam_rr1 )

| Assoc_reparam :  forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E),
 forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
 forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
 forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
 forall (Param_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall Sense00_Param_D (Sense01_Param_D : Sense01_Param_data Sense00_Param_D),
 forall Sense00_Param_DE (Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE) ,
 forall Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D,
 forall Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E,
 forall (Param_DE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee),
 forall Sense00_Param_C (Sense01_Param_C : Sense01_Param_data Sense00_Param_C),
 forall Sense00_Param_CD (Sense01_Param_CD : Sense01_Param_data Sense00_Param_CD) ,
 forall Sense1_Param_proj_dd : Sense1_Param_data Sense01_Param_CD Sense01_Param_C,
 forall Sense1_Param_subst_dd : Sense1_Param_data Sense01_Param_CD Sense01_Param_D,
 forall (Param_CD : pseudoCode_PParam Sense1_Param_proj_dd Sense1_Param_subst_dd),

   'CoMod_$( Compos_pseudoCode_PParam (Compos_pseudoCode_PParam Param_EF Param_DE) Param_CD ~>
             Compos_pseudoCode_PParam Param_EF (Compos_pseudoCode_PParam Param_DE Param_CD)
             @_  (reparamCongr_Assoc_reparam Sense1_Param_proj_ff Sense1_Param_subst_ff
                                        Sense1_Param_proj_ee Sense1_Param_subst_ee
                                        Sense1_Param_proj_dd Sense1_Param_subst_dd) )

| Rev_reparam : forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E),
 forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
 forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
 forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
 forall (Param_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0) ,
 forall Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E,
 forall Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F,
 forall (Param_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0),
 forall Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                                  Sense1_Param_proj_ff0 Sense1_Param_subst_ff0,
   'CoMod_$( Param_EF ~> Param_EF0 @_ Sense1_Param_reparam_rr ) ->
   'CoMod_$( Param_EF0 ~> Param_EF @_ (reparamCongr_Rev Sense1_Param_reparam_rr) )

| morCoMod_comp_Unit_reparam :
    forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
      'CoMod_$ ( Compos_pseudoCode_PParam (Unit_pseudoCode_PParam Sense01_Param_F) PParam_EF ~> PParam_EF @_ reparamCongr_morCoMod_comp_Unit Sense1_Param_proj_ff Sense1_Param_subst_ff )

| Unit_comp_morCoMod_reparam :
    forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
      'CoMod_$ ( Compos_pseudoCode_PParam PParam_EF (Unit_pseudoCode_PParam Sense01_Param_E) ~> PParam_EF @_ reparamCongr_Unit_comp_morCoMod Sense1_Param_proj_ff Sense1_Param_subst_ff )

| ViewMor_PParam_comp_ViewMor_PParam_reparam :
  forall (Q : obParametrizator) (G : obGenerator) (p : 'Parametrizator(  Parameter0 G ~> Q (** | Q_Viewing ... only the viewing elements*) )) (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
    (pp : viewingDefault_Constructel_Param p cons_inFibre_P),
  forall (G' : obGenerator) (p' : 'Parametrizator ( Parameter0 G' ~> P )) (P' : obParametrizator) (inFibre_P' : inFibre G' P')
    (cons_inFibre_P' : inFibreDefault_Constructel_Param inFibre_P')
  (p'p' : viewingDefault_Constructel_Param p' cons_inFibre_P'),
    'CoMod_$ ( Compos_pseudoCode_PParam (ViewMor_pseudoCode_PParam pp) (ViewMor_pseudoCode_PParam p'p') ~>
                                            ViewMor_pseudoCode_PParam (viewingDefault_Constructel_Param_action pp p'p') @_
                                            reparamCongr_ViewMor_PParam_comp_ViewMor_PParam p inFibre_P p' inFibre_P' )

| Compos_pseudoCode_PParam_cong : forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E),
 forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
 forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
 forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
 forall (Param_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0) ,
 forall Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E,
 forall Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F,
 forall (Param_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0),
 forall (*TODO: this _proj_ ( and _subst_ ) should be included in the Sense1_Param_reparam_rr of 'CoMod_& *)
   Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff  Sense1_Param_subst_ff
                                          Sense1_Param_proj_ff0  Sense1_Param_subst_ff0 ,
 forall (reparam_rr : 'CoMod_$(  Param_EF  ~>  Param_EF0  @_  Sense1_Param_reparam_rr  ) ),
 forall Sense00_Param_D (Sense01_Param_D : Sense01_Param_data Sense00_Param_D),
 forall Sense00_Param_DE (Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE) ,
 forall Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D,
 forall Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E,
 forall (Param_DE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee),
 forall Sense00_Param_DE0 (Sense01_Param_DE0 : Sense01_Param_data Sense00_Param_DE0) ,
 forall Sense1_Param_proj_ee0 : Sense1_Param_data Sense01_Param_DE0 Sense01_Param_D,
 forall Sense1_Param_subst_ee0 : Sense1_Param_data Sense01_Param_DE0 Sense01_Param_E,
 forall (Param_DE0 : pseudoCode_PParam Sense1_Param_proj_ee0 Sense1_Param_subst_ee0),
 forall Sense1_Param_reparam_qq : reparamCongr Sense1_Param_proj_ee  Sense1_Param_subst_ee
                                          Sense1_Param_proj_ee0  Sense1_Param_subst_ee0,
 forall (reparam_qq : 'CoMod_$(  Param_DE  ~>  Param_DE0  @_  Sense1_Param_reparam_qq ) ),

   'CoMod_$( Compos_pseudoCode_PParam Param_EF Param_DE ~>
             Compos_pseudoCode_PParam Param_EF0 Param_DE0
             @_ reparamCongr_Compos_pseudoCode_PParam_cong Sense1_Param_reparam_rr Sense1_Param_reparam_qq )

| ViewMor_PParam_cong_reparam :
 forall (Q : obParametrizator) (G : obGenerator) (p : 'Parametrizator(  Parameter0 G ~> Q (** | Q_Viewing ... only the viewing elements*) )) (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (pp : viewingDefault_Constructel_Param p cons_inFibre_P),
 forall (G' : obGenerator) (p' : 'Parametrizator(  Parameter0 G' ~> Q )) (inFibre_P' : inFibre G' P)
   (cons_inFibre_P' : inFibreDefault_Constructel_Param inFibre_P')
   (p'p' : viewingDefault_Constructel_Param p' cons_inFibre_P'),
    forall (g : reparamCongrGenerator G' G),
      forall (Heqparam : p' = (Parameter1 (fst (sval g))) o>Parametrizator p),
      forall (Heqis : fst (sval inFibre_P') =  fst (sval (inFibre_transformation  g inFibre_P)) ),
        (**TODO: for now this uses senses, but shall be fully grammatical (using the common sameness at some viewing-intersection) if pp and p'p' *)
        'CoMod_$ ( ViewMor_pseudoCode_PParam pp ~> ViewMor_pseudoCode_PParam p'p' @_ reparamCongr_ViewMor_PParam_cong Heqparam Heqis )

| ViewedFunctor1_PParam_default_cong_reparam :
  forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
         (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
         (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff) (Sense00_Param_EF0 : obGenerator -> Type)
         (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0) (Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
         (Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F) (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
         (Sense1_Param_reparam_conv_param_ff : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
         (reparam_conv_param_ff : 'CoMod_$ ( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_conv_param_ff )),
    'CoMod_$ ( ViewedFunctor1_pseudoCode_PParam_default PParam_EF ~> ViewedFunctor1_pseudoCode_PParam_default PParam_EF0 @_ Sense1_Param_reparam_conv_param_ff )

| Destructing_pseudoCode_PParam_default_cong_reparam :
 forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),
  forall (Sense00_Param_K : obGenerator -> Type)
  (Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
  (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
  (Sense1_Param_ee_morphism :  Morphism_prop Sense1_Param_ee_)
  (PParam_ee_ : pseudoCode_PParam_Family Sense1_Param_ee_morphism)
  (Sense1_Param_dd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
  (Sense1_Param_dd_morphism :  Morphism_prop Sense1_Param_dd_)
  (PParam_dd_ : pseudoCode_PParam_Family Sense1_Param_dd_morphism)
  (Sense1_Param_reparam_eedd_ :  forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
                                    (P : obParametrizator) (inFibre_P : inFibre G P),
                                reparamCongr (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal)
                                  (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_dd_ G paramlocal))
  (reparam_eedd_ :  forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
                  'CoMod_$ ( AtMember_PParam PParam_ee_ cons_paramlocal ~> AtMember_PParam PParam_dd_ cons_paramlocal @_ Sense1_Param_reparam_eedd_ G paramlocal P inFibre_P )),

  'CoMod_$ ( Destructing_pseudoCode_PParam_default'  Param_SubstF PParam_ee_ ~>
  Destructing_pseudoCode_PParam_default' Param_SubstF PParam_dd_ @_
  reparamCongr_Destructing_pseudoCode_PParam_default_cong Sense1_Param_ee_morphism Sense1_Param_dd_morphism Sense1_Param_reparam_eedd_ )

| Constructing_PParam_default_comp_Destructing_PParam_default_reparam :
forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),
forall (Sense00_Param_K : obGenerator -> Type) (Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
  (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
  (Sense1_Param_ee_morphism :  Morphism_prop Sense1_Param_ee_)
  (PParam_ee_ : pseudoCode_PParam_Family Sense1_Param_ee_morphism),
 forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
  'CoMod_$ ( Compos_pseudoCode_PParam (Destructing_pseudoCode_PParam_default' Param_SubstF PParam_ee_)
                                          (AtMember_PParam (Constructing_pseudoCode_PParam_default Param_SubstF) cons_paramlocal) ~>
                                          Compos_pseudoCode_PParam (UnitViewedFunctor_pseudoCode_PParam_default' Sense01_Param_K) (AtMember_PParam PParam_ee_ cons_paramlocal) @_
                                          reparamCongr_Constructing_PParam_default_comp_Destructing_PParam_default Sense1_Param_ee_morphism paramlocal inFibre_P )

| Formatting_cong_reparam
: forall (Sense00_Form_E : obGenerator -> Type)
(  Sense01_Form_E : Sense01_data Sense00_Form_E)
(  Sense00_Param_E : obGenerator -> Type)
(  Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(  Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(  Sense00_Form_F : obGenerator -> Type)
(  Sense01_Form_F : Sense01_data Sense00_Form_F)
(  Sense00_Param_F : obGenerator -> Type)
(  Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(  Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
(  Sense00_Param_EF : obGenerator -> Type)
(  Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
(  Sense1_Param_proj : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
(  Sense1_Param_subst : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
(  PParam_EF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst)
(  Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
(  Form_ff : pseudoCode Sense1_Form_ff)
  (Sense00_Param_EF0 : obGenerator -> Type)
  (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0)
  (Sense1_Param_proj0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
  (Sense1_Param_subst0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F)
  (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj0 Sense1_Param_subst0)
  (Sense1_Form_ff0 : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj0 Sense1_Param_subst0)
  (Form_ff0 : pseudoCode Sense1_Form_ff0)
  (Sense1_Param_reparam_conv_ff : reparamCongr Sense1_Param_proj Sense1_Param_subst Sense1_Param_proj0 Sense1_Param_subst0)
  (reparam_conv_ff : 'CoMod_$ ( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_conv_ff ))
  (Congr_congr_ff : Congr_data Sense1_Form_ff Sense1_Form_ff0 Sense1_Param_reparam_conv_ff)
  (congr_ff : 'CoMod$ ( Form_ff ~> Form_ff0 @_ Congr_congr_ff )),
  'CoMod_$ ( Formatting_pseudoCode_PParam' PParam_EF Form_ff ~> Formatting_pseudoCode_PParam' PParam_EF0 Form_ff0 @_
                                           reparamCongr_Formatting_cong Congr_congr_ff )

| ViewMor_PParam_comp_Constructing_PParam_default_reparam :
forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),

 forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
 forall (G' : obGenerator) (p' : 'Parametrizator ( Parameter0 G' ~> P )) (P' : obParametrizator) (inFibre_P' : inFibre G' P')
   (cons_inFibre_P' : inFibreDefault_Constructel_Param inFibre_P')
   (p'p' : viewingDefault_Constructel_Param p' cons_inFibre_P'),
    'CoMod_$ ( Compos_pseudoCode_PParam (AtMember_PParam (Constructing_pseudoCode_PParam_default Param_SubstF) cons_paramlocal)
                 (ViewMor_pseudoCode_PParam p'p') ~>
               AtMember_PParam (Constructing_pseudoCode_PParam_default Param_SubstF)  (constructel_Param_action cons_paramlocal p'p' (eq_refl _) ) @_
               reparamRev_ViewMor_PParam_comp_Constructing_PParam_default  Sense1_Param_subst paramlocal inFibre_P p' inFibre_P' )

| UnitViewedFunctor_PParam_default_morphismPost_reparam' :
  forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
         (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
         (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff) ,
    'CoMod_$ ( Compos_pseudoCode_PParam (ViewedFunctor1_pseudoCode_PParam_default PParam_EF) (UnitViewedFunctor_pseudoCode_PParam_default' _) ~>
                               (Compos_pseudoCode_PParam (UnitViewedFunctor_pseudoCode_PParam_default' _ ) PParam_EF) @_
                                            reparamCongr_Trans (reparamCongr_Unit_comp_morCoMod _ _) (reparamCongr_Rev (reparamCongr_morCoMod_comp_Unit _ _)) (* (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ff Sense1_Param_proj_ee Sense1_Param_subst_ee)
                                            (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_subst_ee)  *) )

| ViewedFunctor1_PParam_default_morphism_reparam :
    forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff) (Sense00_Param_D : obGenerator -> Type)
           (Sense01_Param_D : Sense01_Param_data Sense00_Param_D) (Sense00_Param_DE : obGenerator -> Type) (Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
           (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D) (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
           (PParam_DE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee),
      'CoMod_$ ( Compos_pseudoCode_PParam (ViewedFunctor1_pseudoCode_PParam_default PParam_EF) (ViewedFunctor1_pseudoCode_PParam_default PParam_DE) ~>
                                              ViewedFunctor1_pseudoCode_PParam_default (Compos_pseudoCode_PParam PParam_EF PParam_DE) @_
                                              reparamCongr_Refl (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ff Sense1_Param_proj_ee Sense1_Param_subst_ee)
                                              (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_subst_ee) )

| Constructing_PParam_default_cong_reparam
     :  forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),
 forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
 forall (paramlocal' : Sense00_Param_SumSubstF G) (inFibre_P' : inFibre G P)
   (cons_inFibre_P' : inFibreDefault_Constructel_Param inFibre_P')
   (cons_paramlocal' : constructel_Param Param_SubstF paramlocal' cons_inFibre_P' ),
 forall (Heqparamlocal : paramlocal' = paramlocal)
   (Heqis : fst (sval inFibre_P') = fst (sval inFibre_P)),
   (**TODO: for now this uses senses, but shall be fully grammatical (using the common sameness at some viewing-intersection) of cons_paramlocal and cons_paramlocal' *)
       'CoMod_$ ( AtMember_PParam (Constructing_pseudoCode_PParam_default Param_SubstF) cons_paramlocal ~>
                                   AtMember_PParam (Constructing_pseudoCode_PParam_default Param_SubstF) cons_paramlocal' @_ (reparamCongr_Constructing_PParam_default_cong  Sense1_Param_subst Heqparamlocal Heqis ) )

where "''CoMod_$' (  Param_EF  ~>  Param_EF0  @_  Sense1_Param_reparam_rr  )" :=
        (@congrPseudoCode_PParam _ _ _ _ _ _ _ _ Param_EF _ _ _ _ Param_EF0 Sense1_Param_reparam_rr) : poly_scope
with congrPseudoCode : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
                             (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
                             (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E),
    forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
      (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F),
    forall (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
      (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
      (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F),
    forall (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Form_ff : pseudoCode Sense1_Form_ff),
    forall (Sense00_Param_EF' : obGenerator -> Type) (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF')
      (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
      (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F),
    forall (Sense1_Form_ff' : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff' Sense1_Param_subst_ff')
      (Form_ff' : pseudoCode Sense1_Form_ff'),
    forall (Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                                Sense1_Param_proj_ff' Sense1_Param_subst_ff')
      (Congr_congr_ff : Congr_data Sense1_Form_ff Sense1_Form_ff' Sense1_Param_reparam_rr), Type :=

| Refl_congrPseudoCode : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
                             (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
                             (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E),
    forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
      (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F),
    forall (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
      (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
      (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F),
    forall (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Form_ff : pseudoCode Sense1_Form_ff),
      'CoMod$( Form_ff ~> Form_ff @_ Congr_Refl Sense1_Form_ff )

| Trans_congrPseudoCode : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
                             (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
                             (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E),
    forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
      (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F),
    forall (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
      (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
      (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F),
    forall (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Form_ff : pseudoCode Sense1_Form_ff),
    forall (Sense00_Param_EF' : obGenerator -> Type) (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF')
      (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
      (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F),
    forall (Sense1_Form_ff' : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff' Sense1_Param_subst_ff')
      (Form_ff' : pseudoCode Sense1_Form_ff'),
    forall (Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                                Sense1_Param_proj_ff' Sense1_Param_subst_ff')
      (Congr_congr_ff : Congr_data Sense1_Form_ff Sense1_Form_ff' Sense1_Param_reparam_rr)
      (congr_ff : 'CoMod$( Form_ff ~> Form_ff' @_ Congr_congr_ff )),
    forall (Sense00_Param_EF'' : obGenerator -> Type) (Sense01_Param_EF'' : Sense01_Param_data Sense00_Param_EF'')
      (Sense1_Param_proj_ff'' : Sense1_Param_data Sense01_Param_EF'' Sense01_Param_E)
      (Sense1_Param_subst_ff'' : Sense1_Param_data Sense01_Param_EF'' Sense01_Param_F),
    forall (Sense1_Form_ff'' : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff'' Sense1_Param_subst_ff'')
      (Form_ff'' : pseudoCode Sense1_Form_ff''),
    forall (Sense1_Param_reparam_rr' : reparamCongr Sense1_Param_proj_ff' Sense1_Param_subst_ff'
                                                Sense1_Param_proj_ff'' Sense1_Param_subst_ff'')
      (Congr_congr_ff' : Congr_data Sense1_Form_ff' Sense1_Form_ff'' Sense1_Param_reparam_rr')
      (congr_ff' : 'CoMod$( Form_ff' ~> Form_ff'' @_ Congr_congr_ff' )),
      'CoMod$( Form_ff ~> Form_ff'' @_ Congr_Trans Congr_congr_ff Congr_congr_ff'  )

| Assoc_congrPseudoCode :  forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
                             (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
                             (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E),
    forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
      (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F),
    forall (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
      (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
      (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F),
    forall (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Form_ff : pseudoCode Sense1_Form_ff)
      (Param_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),

    forall (Sense00_Form_D : obGenerator -> Type) (Sense01_Form_D : Sense01_data Sense00_Form_D)
      Sense00_Param_D (Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
      (Sense1_FormParam_D : Sense1_FormParam_data Sense01_Form_D Sense01_Param_D),
 forall Sense00_Param_DE (Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE) ,
 forall Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D,
 forall Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E,
 forall (Sense1_Form_ee : Sense1_Form_data Sense1_FormParam_D Sense1_FormParam_E Sense1_Param_proj_ee Sense1_Param_subst_ee)
   (Form_ee : pseudoCode Sense1_Form_ee)
 (Param_DE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee),

 forall (Sense00_Form_C : obGenerator -> Type) (Sense01_Form_C : Sense01_data Sense00_Form_C)
   Sense00_Param_C (Sense01_Param_C : Sense01_Param_data Sense00_Param_C)
 (Sense1_FormParam_C : Sense1_FormParam_data Sense01_Form_C Sense01_Param_C),
 forall Sense00_Param_CD (Sense01_Param_CD : Sense01_Param_data Sense00_Param_CD) ,
 forall Sense1_Param_proj_dd : Sense1_Param_data Sense01_Param_CD Sense01_Param_C,
 forall Sense1_Param_subst_dd : Sense1_Param_data Sense01_Param_CD Sense01_Param_D,
 forall (Sense1_Form_dd : Sense1_Form_data Sense1_FormParam_C Sense1_FormParam_D Sense1_Param_proj_dd Sense1_Param_subst_dd)
   (Form_dd : pseudoCode Sense1_Form_dd)
   (Param_CD : pseudoCode_PParam Sense1_Param_proj_dd Sense1_Param_subst_dd),
   'CoMod$( Compos_pseudoCode (Compos_pseudoCode_PParam Param_EF Param_DE) (Compos_pseudoCode Param_EF Form_ff Param_DE Form_ee)
                                  Param_CD Form_dd ~>
                                  Compos_pseudoCode Param_EF Form_ff
                                  (Compos_pseudoCode_PParam Param_DE Param_CD) (Compos_pseudoCode Param_DE Form_ee Param_CD Form_dd)
             @_  Congr_Assoc_congrPseudoCode Sense1_Form_ff Sense1_Form_ee Sense1_Form_dd )

| Rev_congrPseudoCode :
  forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
    (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)

           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (Form_ff : pseudoCode Sense1_Form_ff)
           (Sense00_Param_EF' : obGenerator -> Type) (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF') (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
           (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F)
           (Sense1_Form_ff' : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff' Sense1_Param_subst_ff')
           (Form_ff' : pseudoCode Sense1_Form_ff')
           (Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff' Sense1_Param_subst_ff')
           (Congr_congr_ff : Congr_data Sense1_Form_ff Sense1_Form_ff' Sense1_Param_reparam_rr)
           (congr_ff : 'CoMod$( Form_ff ~> Form_ff' @_ Congr_congr_ff )),
          'CoMod$( Form_ff' ~> Form_ff @_ Congr_Rev Congr_congr_ff )

| Compos_cong_congrPseudoCode :  forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
         (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (Sense00_Form_F' : obGenerator -> Type) (Sense01_Form_F' : Sense01_data Sense00_Form_F')
         (Sense00_Param_F' : obGenerator -> Type) (Sense01_Param_F' : Sense01_Param_data Sense00_Param_F') (Sense1_FormParam_F' : Sense1_FormParam_data Sense01_Form_F' Sense01_Param_F')
         (Sense00_Param_F'F : obGenerator -> Type) (Sense01_Param_F'F : Sense01_Param_data Sense00_Param_F'F) (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F')
         (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F) (PParam_F'F : pseudoCode_PParam Sense1_Param_proj_ff' Sense1_Param_subst_ff')
         (Sense1_Form_ff' : Sense1_Form_data Sense1_FormParam_F' Sense1_FormParam_F Sense1_Param_proj_ff' Sense1_Param_subst_ff') (Form_ff' : pseudoCode Sense1_Form_ff')
         (Sense00_Form_F'' : obGenerator -> Type) (Sense01_Form_F'' : Sense01_data Sense00_Form_F'') (Sense00_Param_F'' : obGenerator -> Type) (Sense01_Param_F'' : Sense01_Param_data Sense00_Param_F'')
         (Sense1_FormParam_F'' : Sense1_FormParam_data Sense01_Form_F'' Sense01_Param_F'') (Sense00_Param_F''F' : obGenerator -> Type) (Sense01_Param_F''F' : Sense01_Param_data Sense00_Param_F''F')
         (Sense1_Param_proj_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F'') (Sense1_Param_subst_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F')
         (PParam_F''F' : pseudoCode_PParam Sense1_Param_proj_ff_ Sense1_Param_subst_ff_)
         (Sense1_Form_ff_ : Sense1_Form_data Sense1_FormParam_F'' Sense1_FormParam_F' Sense1_Param_proj_ff_ Sense1_Param_subst_ff_) (Form_ff_ : pseudoCode Sense1_Form_ff_)
         (Sense00_Param_E'E : obGenerator -> Type) (Sense01_Param_E'E : Sense01_Param_data Sense00_Param_E'E) (Sense1_Param_proj_ee' : Sense1_Param_data Sense01_Param_E'E Sense01_Param_F')
         (Sense1_Param_subst_ee' : Sense1_Param_data Sense01_Param_E'E Sense01_Param_F) (PParam_E'E : pseudoCode_PParam Sense1_Param_proj_ee' Sense1_Param_subst_ee')
         (Sense1_Form_ee' : Sense1_Form_data Sense1_FormParam_F' Sense1_FormParam_F Sense1_Param_proj_ee' Sense1_Param_subst_ee') (Form_ee' : pseudoCode Sense1_Form_ee')
         (Sense1_Param_reparam_F'F : reparamCongr Sense1_Param_proj_ff' Sense1_Param_subst_ff' Sense1_Param_proj_ee' Sense1_Param_subst_ee')
         (reparam_F'F : 'CoMod_$(  PParam_F'F  ~>  PParam_E'E  @_ Sense1_Param_reparam_F'F ))
         (Congr_congr_ff' : Congr_data Sense1_Form_ff' Sense1_Form_ee' Sense1_Param_reparam_F'F),
    'CoMod$ ( Form_ff' ~> Form_ee' @_ Congr_congr_ff' ) ->
    forall (Sense00_Param_E''E' : obGenerator -> Type) (Sense01_Param_E''E' : Sense01_Param_data Sense00_Param_E''E') (Sense1_Param_proj_ee_ : Sense1_Param_data Sense01_Param_E''E' Sense01_Param_F'')
           (Sense1_Param_subst_ee_ : Sense1_Param_data Sense01_Param_E''E' Sense01_Param_F') (PParam_E''E' : pseudoCode_PParam Sense1_Param_proj_ee_ Sense1_Param_subst_ee_)
           (Sense1_Form_ee_ : Sense1_Form_data Sense1_FormParam_F'' Sense1_FormParam_F' Sense1_Param_proj_ee_ Sense1_Param_subst_ee_) (Form_ee_ : pseudoCode Sense1_Form_ee_)
           (Sense1_Param_reparam_F''F' : reparamCongr Sense1_Param_proj_ff_ Sense1_Param_subst_ff_ Sense1_Param_proj_ee_ Sense1_Param_subst_ee_)
           (reparam_F''F' : 'CoMod_$(  PParam_F''F'  ~>  PParam_E''E'  @_ Sense1_Param_reparam_F''F' ))
           (Congr_congr_ff_ : Congr_data Sense1_Form_ff_ Sense1_Form_ee_ Sense1_Param_reparam_F''F'),
      'CoMod$ ( Form_ff_ ~> Form_ee_ @_ Congr_congr_ff_ ) ->
      'CoMod$ ( Compos_pseudoCode PParam_F'F Form_ff' PParam_F''F' Form_ff_ ~> Compos_pseudoCode PParam_E'E Form_ee' PParam_E''E' Form_ee_ @_
                                    congr_Compos_cong Congr_congr_ff' Congr_congr_ff_ )

| ViewMor_cong_congrPseudoCode :
forall (G H : obGenerator) (g : 'Generator( G ~> H (** | H_Viewing ... only the viewing elements*)))
  (gg : viewingDefault_Constructel_Param_Form g),
forall(g' : 'Generator( G ~> H (** | H_Viewing ... only the viewing elements*)))
  (g'g' : viewingDefault_Constructel_Param_Form g'),
forall (Heqparam : g' = g),
  (**TODO: for now this uses senses, but shall be fully grammatical (using the common sameness at some viewing-intersection) of gg and g'g' *)
    'CoMod$ ( ViewMor_pseudoCode gg ~> ViewMor_pseudoCode g'g' @_ (Congr_ViewMor_cong Heqparam ) )

| ViewedFunctor1_default_cong_congrPseudoCode :
    forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense10_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense10_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (Sense10_Form_ff : Sense1_Form_data Sense10_FormParam_E Sense10_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff) (Form_ff : pseudoCode Sense10_Form_ff)
           (Sense00_Param_EF0 : obGenerator -> Type) (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0) (Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
           (Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F) (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
           (Sense10_Form_ff0 : Sense1_Form_data Sense10_FormParam_E Sense10_FormParam_F Sense1_Param_proj_ff0 Sense1_Param_subst_ff0) (Form_ff0 : pseudoCode Sense10_Form_ff0)
           (Sense1_Param_reparam_conv_ff : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
           (reparam_conv_ff : 'CoMod_$ ( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_conv_ff )),
      forall (Congr_congr_conv_ff : Congr_data Sense10_Form_ff Sense10_Form_ff0 Sense1_Param_reparam_conv_ff)
        (congr_conv_ff :'CoMod$ ( Form_ff ~> Form_ff0 @_ Congr_congr_conv_ff )),
        'CoMod$ ( ViewedFunctor1_default_pseudoCode PParam_EF Form_ff ~> ViewedFunctor1_default_pseudoCode PParam_EF0 Form_ff0 @_ Congr_congr_conv_ff )

| Constructing_default_cong_congrPseudoCode :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

forall (G : obGenerator) (param : Sense00_Param_SubstF G)
  (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
  (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
  (cons_form : constructel_Form F  form),
forall (param' : Sense00_Param_SubstF G) (cons_paramlocal' : constructel_Param Param_SubstF (sval Sense1_Param_subst G param') (Unit_inFibreDefault_Constructel_Param G))
  (form' : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param')
  (cons_form' : constructel_Form F  form'),
  forall (Heqparam : param' = param)
    (Heqform : sval form' = sval form),
    (**TODO: for now this uses senses, but shall be fully grammatical (using the common sameness at some viewing-intersection) of cons_paramlocal and cons_paramlocal' , moreover of cons_form and cons_form' *)
    'CoMod$ ( AtMember_Form (Constructing_default_pseudoCode F) cons_paramlocal cons_form ~>
                            AtMember_Form (Constructing_default_pseudoCode F) cons_paramlocal' cons_form' @_ Congr_Constructing_default_cong  Sense1_Param_subst Heqparam Heqform  )

| Destructing_default_cong_congrPseudoCode''' :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),
forall (Sense00_Param_K : obGenerator -> Type)
    (Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
    (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
    (Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
    (PParam_ee_ : pseudoCode_PParam_Family Sense1_Param_ee_morphism)
    (Sense00_Form_K : obGenerator -> Type)
    (Sense01_Form_K : Sense01_data Sense00_Form_K)
    (Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)
    (Sense1_Form_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
      Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K
                        (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                        (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
    (Sense1_Form_ee_morphism : Morphism_Form_prop Sense1_Form_ee__)
    (Form_ee__ : pseudoCode_Family Sense1_Form_ee_morphism)
    (Sense1_Param_dd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
        Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
    (Sense1_Param_dd_morphism : Morphism_prop Sense1_Param_dd_)
    (PParam_dd_ : pseudoCode_PParam_Family Sense1_Param_dd_morphism)
    (Sense1_Form_dd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
                      Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                        (Sense1_Param_dd_ G (sval Sense1_Param_subst G param)))
    (Sense1_Form_dd_morphism : Morphism_Form_prop Sense1_Form_dd__)
    (Form_dd__ : pseudoCode_Family Sense1_Form_dd_morphism)
    (Sense1_Param_reparam_eedd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G) (P : obParametrizator) (inFibre_P : inFibre G P),
                                reparamCongr (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal)
                                  (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_dd_ G paramlocal))
    (reparam_eedd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
                       (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
                       (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
                  'CoMod_$ ( AtMember_PParam PParam_ee_ cons_paramlocal ~> AtMember_PParam PParam_dd_ cons_paramlocal @_ Sense1_Param_reparam_eedd_ G paramlocal P inFibre_P ))
    (Congr_congr_eedd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
                       Congr_data (Sense1_Form_ee__ G param form) (Sense1_Form_dd__ G param form) (Sense1_Param_reparam_eedd_ _ (sval Sense1_Param_subst G param) _ (InFibre G)))
    (congr_eedd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
                      (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
                      (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
                      (cons_form : constructel_Form F  form),
                 'CoMod$ ( AtMember_Form Form_ee__ cons_paramlocal cons_form ~> AtMember_Form Form_dd__ cons_paramlocal cons_form @_ Congr_congr_eedd__ G param form )),
 'CoMod$ ( Destructing_default_pseudoCode' F PParam_ee_ Form_ee__  ~>
                                          Destructing_default_pseudoCode' F PParam_dd_ Form_dd__
  @_ Congr_Destructing_default_cong''' Sense1_Param_ee_morphism Sense1_Form_ee_morphism
  Sense1_Param_dd_morphism Sense1_Form_dd_morphism
   Congr_congr_eedd__ )

| Remember_cong_congrPseudoCode :
  forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
         (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
         (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
         (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF) (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst)
         (Sense00_Form_LF : obGenerator -> Type) (Sense01_Form_LF : Sense01_data Sense00_Form_LF) (Sense1_FormParam_LF : Sense1_FormParam_data Sense01_Form_LF Sense01_Param_PiSubstF)
         (Sense1_Form_ll' : Sense1_Form_data Sense1_FormParam_LF Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst) (Form_ll' : pseudoCode Sense1_Form_ll')
         (Sense1_Form_ll'0 : Sense1_Form_data Sense1_FormParam_LF Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst) (Form_ll'0 : pseudoCode Sense1_Form_ll'0)
         (Congr_congr_ll'll'0 : Congr_data Sense1_Form_ll' Sense1_Form_ll'0 (reparamCongr_Refl Sense1_Param_proj Sense1_Param_subst)),
  forall (congr_ll'll'0 : 'CoMod$ ( Form_ll' ~> Form_ll'0 @_ Congr_congr_ll'll'0 ) ),
    'CoMod$ ( Remember_pseudoCode PParam_SubstF Form_ll' ~> Remember_pseudoCode PParam_SubstF Form_ll'0 @_ Congr_Remember_cong' Congr_congr_ll'll'0 )
| morCoMod_comp_Unit_congrPseudoCode
: forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff) (Form_ff : pseudoCode Sense1_Form_ff),
      'CoMod$ ( Compos_pseudoCode (Unit_pseudoCode_PParam Sense01_Param_F) (Unit_pseudoCode Sense1_FormParam_F) PParam_EF Form_ff ~> Form_ff @_
                                     Congr_morCoMod_comp_Unit Sense1_Form_ff )

| Unit_comp_morCoMod_congrPseudoCode
: forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff) (Form_ff : pseudoCode Sense1_Form_ff),
      'CoMod$ ( Compos_pseudoCode PParam_EF Form_ff (Unit_pseudoCode_PParam Sense01_Param_E) (Unit_pseudoCode Sense1_FormParam_E)  ~> Form_ff @_
                                     Congr_Unit_comp_morCoMod Sense1_Form_ff )

| ViewMor_comp_ViewMor_congrPseudoCode' :
  forall (G H : obGenerator) (g : 'Generator( G ~> H )) (gg : viewingDefault_Constructel_Param_Form g),
  forall (G' : obGenerator) (g' : 'Generator( G' ~> G )) (g'g' : viewingDefault_Constructel_Param_Form g'),
    'CoMod$ ( Compos_pseudoCode (ViewMor_pseudoCode_PParam (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form gg)) (ViewMor_pseudoCode gg)
                  (ViewMor_pseudoCode_PParam (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form g'g')) (ViewMor_pseudoCode g'g') ~>
                  ViewMor_pseudoCode (viewingDefault_Constructel_Param_Form_action gg g'g') @_ Congr_ViewMor_comp_ViewMor' g g' )

| ViewMor_comp_Constructing_default_congrPseudoCode :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),
forall (G : obGenerator) (param : Sense00_Param_SubstF G)
  (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
  (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
  (cons_form : constructel_Form F  form),
forall (G' : obGenerator) (g : 'Generator( G' ~> G )) (gg : viewingDefault_Constructel_Param_Form g),
  'CoMod$ ( Compos_pseudoCode (AtMember_PParam (Constructing_pseudoCode_PParam_default Param_SubstF) cons_paramlocal)
                                 (AtMember_Form (Constructing_default_pseudoCode F) cons_paramlocal cons_form)
                                 (ViewMor_pseudoCode_PParam (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form gg)) (ViewMor_pseudoCode gg) ~>
                                 AtMember_Form (Constructing_default_pseudoCode F)
                                 ( ( constructel_Param_action cons_paramlocal (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form gg) (constructel_Form_action_transp_Heq Sense1_Param_subst param g) ))
                                 ( constructel_Form_action cons_form gg)
                                 @_ Congr_ViewMor_comp_Constructing_default Sense1_Param_subst form g )

| UnitViewedFunctor_default_morphismPost_congrPseudoCode' :
    forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense10_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense10_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (Sense10_Form_ff : Sense1_Form_data Sense10_FormParam_E Sense10_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff) (Form_ff : pseudoCode Sense10_Form_ff),
      'CoMod$ (
              Compos_pseudoCode (ViewedFunctor1_pseudoCode_PParam_default PParam_EF) (ViewedFunctor1_default_pseudoCode PParam_EF Form_ff)
                                   (UnitViewedFunctor_pseudoCode_PParam_default' _) (UnitViewedFunctor_default_pseudoCode' _) ~>
           (Compos_pseudoCode (UnitViewedFunctor_pseudoCode_PParam_default' _ ) (UnitViewedFunctor_default_pseudoCode' _ ) PParam_EF Form_ff)  @_
           Congr_Trans (Congr_Unit_comp_morCoMod _) (Congr_Rev (Congr_morCoMod_comp_Unit _)) )

| ViewedFunctor1_default_morphism_congrPseudoCode :
    forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense10_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense10_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (Sense10_Form_ff : Sense1_Form_data Sense10_FormParam_E Sense10_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff) (Form_ff : pseudoCode Sense10_Form_ff)
           (Sense00_Form_D : obGenerator -> Type) (Sense01_Form_D : Sense01_data Sense00_Form_D) (Sense00_Param_D : obGenerator -> Type) (Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
           (Sense10_FormParam_D : Sense1_FormParam_data Sense01_Form_D Sense01_Param_D) (Sense00_Param_DE : obGenerator -> Type) (Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
           (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D) (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
           (PParam_DE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee)
           (Sense10_Form_ee : Sense1_Form_data Sense10_FormParam_D Sense10_FormParam_E Sense1_Param_proj_ee Sense1_Param_subst_ee) (Form_ee : pseudoCode Sense10_Form_ee),
      'CoMod$ (
              Compos_pseudoCode (ViewedFunctor1_pseudoCode_PParam_default PParam_EF) (ViewedFunctor1_default_pseudoCode PParam_EF Form_ff) (ViewedFunctor1_pseudoCode_PParam_default PParam_DE)
                                   (ViewedFunctor1_default_pseudoCode PParam_DE Form_ee) ~>
                                   ViewedFunctor1_default_pseudoCode (Compos_pseudoCode_PParam PParam_EF PParam_DE) (Compos_pseudoCode PParam_EF Form_ff PParam_DE Form_ee) @_
                                   Congr_Refl (Sense1_Form_Compos Sense10_Form_ff Sense10_Form_ee) )

| Remember_comp_Forget_congrPseudoCode :
    forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
           (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
           (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF) (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst)
           (Sense00_Form_LF : obGenerator -> Type) (Sense01_Form_LF : Sense01_data Sense00_Form_LF) (Sense1_FormParam_LF : Sense1_FormParam_data Sense01_Form_LF Sense01_Param_PiSubstF)
           (Sense1_Form_ll' : Sense1_Form_data Sense1_FormParam_LF Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst) (Form_ll' : pseudoCode Sense1_Form_ll'),
      'CoMod$ ( Compos_pseudoCode PParam_SubstF (Forget_pseudoCode Sense1_FormParam_F PParam_SubstF) (Unit_pseudoCode_PParam Sense01_Param_PiSubstF) (Remember_pseudoCode PParam_SubstF Form_ll') ~>
                                     Form_ll' @_ Congr_Remember_comp_Forget Sense1_Form_ll' )

| Constructing_default_comp_Destructing_default_congrPseudoCode' :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),
  forall (Sense00_Param_K : obGenerator -> Type)
  (Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
  (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G), Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
  (Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
  (PParam_ee_ : pseudoCode_PParam_Family Sense1_Param_ee_morphism)
  (Sense00_Form_K : obGenerator -> Type)
  (Sense01_Form_K : Sense01_data Sense00_Form_K)
  (Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)
  (Sense1_Form_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
      Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K
                        (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                        (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
  (Sense1_Form_ee_morphism : Morphism_Form_prop Sense1_Form_ee__)
  (Form_ee__ : pseudoCode_Family Sense1_Form_ee_morphism),
forall (G : obGenerator) (param : Sense00_Param_SubstF G)
  (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
  (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
  (cons_form : constructel_Form F  form),
  'CoMod$ ( Compos_pseudoCode (Destructing_pseudoCode_PParam_default'  Param_SubstF PParam_ee_)
      (Destructing_default_pseudoCode' F PParam_ee_ Form_ee__)
      (AtMember_PParam (Constructing_pseudoCode_PParam_default Param_SubstF) cons_paramlocal)
      (AtMember_Form (Constructing_default_pseudoCode F) cons_paramlocal cons_form) ~>
      Compos_pseudoCode (UnitViewedFunctor_pseudoCode_PParam_default' Sense01_Param_K) (UnitViewedFunctor_default_pseudoCode' Sense1_FormParam_K)
      (AtMember_PParam PParam_ee_ cons_paramlocal) (AtMember_Form Form_ee__ cons_paramlocal cons_form) @_
  Congr_Constructing_default_comp_Destructing_default' Sense1_Param_ee_morphism Sense1_Form_ee_morphism  form )

where "''CoMod$' (  Form_ff  ~>  Form_ff'  @_  Congr_congr_ff  )" :=
   (@congrPseudoCode _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Form_ff _ _ _ _ _ Form_ff' _ Congr_congr_ff) : poly_scope .

Notation "reparam_rr_ o>_$ reparam_rr'" := (@Trans_reparam _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ reparam_rr_ _ _ _ _ _ _ reparam_rr')
               (at level 40 , reparam_rr' at next level , left associativity) : poly_scope.
Notation "congr_ff_ o>$ congr_ff'" := (@Trans_congrPseudoCode _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  congr_ff_ _ _ _ _ _ _ _ _ congr_ff')
               (at level 40 , congr_ff' at next level , left associativity) : poly_scope.
(** # #
#+END_SRC

* Grammatical presentation of the morphisms , carrying the pseudocodes for morphisms

#+BEGIN_SRC coq :exports both :results silent # # **)
Reserved Notation "''CoMod' (  E  ~>  F  @_  PParam_EF  @^  Form_ff  )" (at level 0).
Reserved Notation "''CoMod__' (  Param_E  ~>  Param_F  @_  PParam_EF  )" (at level 0).

Inductive morCoMod : forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
 (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E),
 forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
   (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
   (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
   (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
   (Form_ff : pseudoCode Sense1_Form_ff ), Type :=

(** -----cuts to be eliminated----- **)
| Compos : forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
                (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
    forall Sense00_Form_F' Sense01_Form_F' Sense00_Param_F' Sense01_Param_F' Sense1_FormParam_F'
      (F' : @obCoMod Sense00_Form_F' Sense01_Form_F' Sense00_Param_F' Sense01_Param_F' Sense1_FormParam_F'),
    forall Sense00_Param_F'F (Sense01_Param_F'F : Sense01_Param_data Sense00_Param_F'F)
      (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F')
      Sense1_Param_subst_ff' (PParam_F'F : pseudoCode_PParam Sense1_Param_proj_ff' Sense1_Param_subst_ff') Sense1_Form_ff'
      (Form_ff' : pseudoCode Sense1_Form_ff')
      (ff' : 'CoMod( F' ~> F @_ PParam_F'F @^ Form_ff' )),

    forall Sense00_Form_F'' Sense01_Form_F'' Sense00_Param_F'' Sense01_Param_F'' Sense1_FormParam_F''
      (F'' : @obCoMod Sense00_Form_F'' Sense01_Form_F'' Sense00_Param_F'' Sense01_Param_F'' Sense1_FormParam_F''),
    forall Sense00_Param_F''F' (Sense01_Param_F''F' : Sense01_Param_data Sense00_Param_F''F')
       (Sense1_Param_proj_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F'')
       Sense1_Param_subst_ff_ (PParam_F''F' : pseudoCode_PParam Sense1_Param_proj_ff_ Sense1_Param_subst_ff_)
       Sense1_Form_ff_       (Form_ff_ : pseudoCode Sense1_Form_ff_)
      (ff_ : 'CoMod( F'' ~> F' @_ PParam_F''F' @^ Form_ff_ )),

      'CoMod( F'' ~> F @_ (Compos_pseudoCode_PParam PParam_F'F PParam_F''F')
                  @^ (Compos_pseudoCode PParam_F'F Form_ff' PParam_F''F' Form_ff_) )

(** -----solution morphisms----- **)
| Unit : forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
                (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
    'CoMod( F ~> F @_ Unit_pseudoCode_PParam Sense01_Param_F @^ Unit_pseudoCode Sense1_FormParam_F )

(**TODO: should viewingDefault_Constructel_Param_Form  also carry a viewingDefault_Constructel_Param code for (Parameter1 g) (InFibre G) ? *)
| ViewMor : forall (G H : obGenerator) (g : 'Generator( G ~> H (** | H_Viewing ... only the viewing elements*)))
            (gg : viewingDefault_Constructel_Param_Form g),
      'CoMod( View G ~> View H @_ (ViewMor_pseudoCode_PParam (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form gg))
                   @^ ViewMor_pseudoCode gg )

| Constructing_default :
forall (Sense00_Form_F : obGenerator -> Type)
  (Sense01_Form_F : Sense01_data Sense00_Form_F)
  (Sense00_Param_F : obGenerator -> Type)
  (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
  (Sense00_Param_SubstF : obGenerator -> Type)
  (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
  (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
  (Sense00_Param_SumSubstF : obGenerator -> Type)
  (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
  (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
  (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
  (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

forall (G : obGenerator) (param : Sense00_Param_SubstF G)
  (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
  (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
  (cons_form : constructel_Form F  form),

  'CoMod( View G ~> ViewingFunctorSumSubst_default F
               @_ (AtMember_PParam (Constructing_pseudoCode_PParam_default Param_SubstF) cons_paramlocal)
               @^ (AtMember_Form (Constructing_default_pseudoCode F) cons_paramlocal cons_form))

| ViewedFunctor1_default :
forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense10_FormParam_E
  (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense10_FormParam_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),

forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense10_FormParam_F
  (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense10_FormParam_F)
  (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
forall (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
forall Sense10_Form_ff (Form_ff : pseudoCode Sense10_Form_ff) (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )),

forall Sense00_Param_EF' (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF'),
forall Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E,
forall Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F,
forall (PParam_EF' : pseudoCode_PParam Sense1_Param_proj_ff' Sense1_Param_subst_ff'),
forall (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF' )),

forall Sense1_Param_reparam_EF
  (reparam_EF : 'CoMod_$( PParam_EF  ~> PParam_EF' @_ Sense1_Param_reparam_EF) ),

  'CoMod( ViewedFunctor_default E Param_E ~> ViewedFunctor_default F Param_F
                                @_ (ViewedFunctor1_pseudoCode_PParam_default PParam_EF)
                                @^ ViewedFunctor1_default_pseudoCode PParam_EF Form_ff )

| UnitViewedFunctor_default
  : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
      (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
      (Sense10_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense10_FormParam_E)
      (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
      (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Sense10_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense10_FormParam_F)
      (Param_F : obCoMod_Param Sense01_Param_F)
      (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
      (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
      (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Sense10_Form_ff : Sense1_Form_data Sense10_FormParam_E Sense10_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Form_ff : pseudoCode Sense10_Form_ff) (ff : 'CoMod ( E ~> F @_ PParam_EF @^ Form_ff )),

    'CoMod ( E ~> ViewedFunctor_default F Param_F
               @_ (Compos_pseudoCode_PParam (UnitViewedFunctor_pseudoCode_PParam_default' _ ) PParam_EF)
               @^ (Compos_pseudoCode  (UnitViewedFunctor_pseudoCode_PParam_default' _ ) (UnitViewedFunctor_default_pseudoCode' _ ) PParam_EF Form_ff) )

| Destructing_default :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

  forall (Sense00_Param_K : obGenerator -> Type)
(Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
(Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
    Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
(Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
(PParam_ee_ : pseudoCode_PParam_Family Sense1_Param_ee_morphism)

(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)

(Sense00_Param_KE__ : obGenerator -> Type)
(Sense01_Param_KE__ : Sense01_Param_data Sense00_Param_KE__)
(Sense1_Param_proj_ee'__ : Sense1_Param_data Sense01_Param_KE__ Sense01_Param_K)
(Sense1_Param_subst_ee'__ : Sense1_Param_data Sense01_Param_KE__ Sense01_Param_E)
(PParam_ee'__ : pseudoCode_PParam Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__)

(Sense00_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    obGenerator -> Type)
(Sense01_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense01_Param_data (Sense00_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subst0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                       (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal ))

(Sense1_Param_reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__ (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal))
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__ (Sense1_Param_ee_ G paramlocal))
      (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal)
                          ~> PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))

(Sense00_Form_K : obGenerator -> Type)
(Sense01_Form_K : Sense01_data Sense00_Form_K)
(Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)

(Sense1_Form_ee__ :
   forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
     Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K
                       (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                       (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
(Sense1_Form_ee_morphism : Morphism_Form_prop Sense1_Form_ee__)
(Form_ee__ : pseudoCode_Family Sense1_Form_ee_morphism)

(Sense00_Form_E : obGenerator -> Type)
(Sense01_Form_E : Sense01_data Sense00_Form_E)
(Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)

(Sense1_Form_ee'__ : Sense1_Form_data Sense1_FormParam_K Sense1_FormParam_E Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__)
(Form_ee'__ : pseudoCode Sense1_Form_ee'__ )

(Sense00_Param_SubstF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), obGenerator -> Type)
(Sense01_Param_SubstF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), Sense01_Param_data (Sense00_Param_SubstF0__ G param cons_paramlocal form cons_form))
(Sense1_Param_subst0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubstF0__ G param cons_paramlocal form cons_form) (Sense01_Param_View (Parameter0 G)))
(Sense1_Param_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubstF0__ G param cons_paramlocal form cons_form) Sense01_Param_E)
(PParam_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    pseudoCode_PParam (Sense1_Param_subst0__ G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form) )
(Sense1_Form_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_E
                      (Sense1_Param_subst0__  G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form))
(Form_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
pseudoCode (Sense1_Form_ee0__ G param cons_paramlocal form cons_form))
(ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod( View G ~> E @_ (PParam_ee0__ G param cons_paramlocal form cons_form) @^ (Form_ee0__ G param cons_paramlocal form cons_form))),

forall (Sense1_Param_reparam_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
      reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__
                                                               (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                                                               (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__
                                                                (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Param_subst0__ G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form))
(reparam_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal) ~> PParam_ee0__ G param cons_paramlocal form cons_form @_ (Sense1_Param_reparam_ee__ G param cons_paramlocal form cons_form)))
(Congr_congr_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Congr_data (Sense1_Form_Compos (Sense1_Form_ee'__) (Sense1_Form_ee__ G param form)) (Sense1_Form_ee0__ G param cons_paramlocal form cons_form) (Sense1_Param_reparam_ee__ G param cons_paramlocal form cons_form))
(congr_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod$( Compos_pseudoCode PParam_ee'__ Form_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal) (AtMember_Form Form_ee__ cons_paramlocal cons_form) ~> (Form_ee0__ G param cons_paramlocal form cons_form) @_ Congr_congr_ee__ G param cons_paramlocal form cons_form ) ),

  'CoMod( ViewingFunctorSumSubst_default F ~> ViewedFunctor_default E Param_E
      @_ (Compos_pseudoCode_PParam (ViewedFunctor1_pseudoCode_PParam_default PParam_ee'__) (Destructing_pseudoCode_PParam_default' Param_SubstF  PParam_ee_))
      @^ (Compos_pseudoCode (ViewedFunctor1_pseudoCode_PParam_default PParam_ee'__)
                               (ViewedFunctor1_default_pseudoCode PParam_ee'__ Form_ee'__)
                               (Destructing_pseudoCode_PParam_default' Param_SubstF  PParam_ee_)
                               (Destructing_default_pseudoCode' F PParam_ee_ Form_ee__)) )

| Forget :
 forall (Sense00_Form_F : obGenerator -> Type)
   (Sense01_Form_F : Sense01_data Sense00_Form_F)
   (Sense00_Param_F : obGenerator -> Type)
   (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
   (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
   (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

 forall (Sense00_Param_PiSubstF : obGenerator -> Type)
   (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
   (Param_PiSubstF : @obCoMod_Param Sense00_Param_PiSubstF Sense01_Param_PiSubstF),

 forall (Sense00_Param_SubstF : obGenerator -> Type)
   (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
   (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
   (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF)
   (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst),

 forall (Sense00_Param_SubstF' : obGenerator -> Type)
   (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
   (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF)
   (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
   (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
   (param_forget' : 'CoMod__( Param_PiSubstF ~> Param_F @_ PParam_SubstF' )),

 forall (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst
                                               Sense1_Param_proj' Sense1_Param_subst')
   (reparam_forget' : 'CoMod_$( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )),

 forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
   (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
   (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense1_FormParam_E)
   (Sense00_Param_FE : obGenerator -> Type)
   (Sense01_Param_FE : Sense01_Param_data Sense00_Param_FE)
   (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_F)
   (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_E)
   (PParam_FE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee) Sense1_Form_ee
   (Form_ee : pseudoCode Sense1_Form_ee)
   (ee : 'CoMod( F ~> E @_  PParam_FE @^ Form_ee )),

   'CoMod( PiSubst F Param_F Param_PiSubstF PParam_SubstF ~> E
                   @_ (Compos_pseudoCode_PParam PParam_FE PParam_SubstF)
                   @^ (Compos_pseudoCode PParam_FE Form_ee PParam_SubstF (Forget_pseudoCode _ PParam_SubstF ) ) )

| Remember :
 forall (Sense00_Form_F : obGenerator -> Type)
   (Sense01_Form_F : Sense01_data Sense00_Form_F)
   (Sense00_Param_F : obGenerator -> Type)
   (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
   (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
   (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

 forall (Sense00_Param_PiSubstF : obGenerator -> Type)
   (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
   (Param_PiSubstF : @obCoMod_Param Sense00_Param_PiSubstF Sense01_Param_PiSubstF),

 forall (Sense00_Param_SubstF : obGenerator -> Type)
   (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
   (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
   (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF)
   (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst),

 forall (Sense00_Param_SubstF' : obGenerator -> Type)
   (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
   (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF)
   (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
   (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
   (param_forget' : 'CoMod__( Param_PiSubstF ~> Param_F @_ PParam_SubstF' ) ),

 forall (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst
                                               Sense1_Param_proj' Sense1_Param_subst')
   (reparam_forget' : 'CoMod_$( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )),

 forall (Sense00_Form_L : obGenerator -> Type)
   (Sense01_Form_L : Sense01_data Sense00_Form_L)
   (Sense00_Param_L : obGenerator -> Type)
   (Sense01_Param_L : Sense01_Param_data Sense00_Param_L)
   (Sense1_FormParam_L : Sense1_FormParam_data Sense01_Form_L Sense01_Param_L)
   (L : @obCoMod Sense00_Form_L Sense01_Form_L Sense00_Param_L Sense01_Param_L Sense1_FormParam_L)
   (Sense00_Param_LF : obGenerator -> Type)
   (Sense01_Param_LF : Sense01_Param_data Sense00_Param_LF)
   (Sense1_Param_subst_ll : Sense1_Param_data Sense01_Param_LF Sense01_Param_F)
   (Sense1_Param_proj_ll : Sense1_Param_data Sense01_Param_LF Sense01_Param_L)
   (PParam_LF : pseudoCode_PParam Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (Sense1_Form_ll : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_F Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (Form_ll : pseudoCode Sense1_Form_ll)
   (ll : 'CoMod( L ~> F @_ PParam_LF @^ Form_ll )),

 forall (Sense00_Param_LPiSubstF : obGenerator -> Type)
   (Sense01_Param_LPiSubstF : Sense01_Param_data Sense00_Param_LPiSubstF)
   (Sense1_Param_LPiSubstF_subst : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_PiSubstF)
   (Sense1_Param_LPiSubstF_proj : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_L)
   (PParam_LPiSubstF : pseudoCode_PParam Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst),
 forall (Sense00_Form_LF : obGenerator -> Type)
   (Sense01_Form_LF : Sense01_data Sense00_Form_LF)
   (Sense1_FormParam_LF : Sense1_FormParam_data Sense01_Form_LF Sense01_Param_PiSubstF)
   (Sense1_Form_ll' : Sense1_Form_data Sense1_FormParam_LF Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
   (Form_ll' : pseudoCode Sense1_Form_ll')
   (Sense1_Form_ll_ : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_LF Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst)
   (Form_ll_ : pseudoCode Sense1_Form_ll_),

 forall (Sense1_Param_reparam_remember : reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst)
                                             (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj Sense1_Param_subst Sense1_Param_LPiSubstF_subst) Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (reparam_remember : 'CoMod_$( (Compos_pseudoCode_PParam PParam_SubstF PParam_LPiSubstF)
                                   ~> PParam_LF @_ Sense1_Param_reparam_remember ) ),
 forall (Congr_congr_ll : Congr_data (Sense1_Form_Compos Sense1_Form_ll' Sense1_Form_ll_) Sense1_Form_ll Sense1_Param_reparam_remember)
   (congr_ll : 'CoMod$( (Compos_pseudoCode PParam_SubstF Form_ll' PParam_LPiSubstF Form_ll_) ~> Form_ll @_ Congr_congr_ll ) ),

   'CoMod( L ~> PiSubst F Param_F Param_PiSubstF PParam_SubstF
             @_ (Compos_pseudoCode_PParam (Unit_pseudoCode_PParam _) PParam_LPiSubstF )
             @^ (Compos_pseudoCode (Unit_pseudoCode_PParam _) (Remember_pseudoCode PParam_SubstF Form_ll') PParam_LPiSubstF Form_ll_ ) )

(**
/!\ TROLL /!\  REDO [REMEMBER] BY ASSUMING [FORM_LL] FASTOR AS [(FORM_LL' OVER REPARAM_LPISUBST) o>COMOD (FORM_LL'' OVER REPARAM_SUBSTF)]
   THEN THE OUTPUT IS JUST TO STRAIGHTEN THIS FACTORIZATION THROUGH [FORGET] ...
*)

where "''CoMod' ( E ~> F @_ PParam_EF @^ Form_ff )" :=
        (@morCoMod _ _ _ _ _ E _ _ _ _ _ F  _ _ _ _ PParam_EF _ Form_ff) : poly_scope

with morCoMod_PParam : forall Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
 forall Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
   (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
   (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
   (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff), Type :=

(** -----cuts to be eliminated----- **)
| Compos_PParam :
forall (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Param_F : obCoMod_Param Sense01_Param_F)
  (Sense00_Param_F' : obGenerator -> Type) (Sense01_Param_F' : Sense01_Param_data Sense00_Param_F')
  (Param_F' : obCoMod_Param Sense01_Param_F') (Sense00_Param_F'F : obGenerator -> Type)
  (Sense01_Param_F'F : Sense01_Param_data Sense00_Param_F'F) (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F')
  (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F) (PParam_F'F : pseudoCode_PParam Sense1_Param_proj_ff' Sense1_Param_subst_ff')
  (param_ff' : 'CoMod__( Param_F' ~> Param_F @_ PParam_F'F  )),

forall (Sense00_Param_F'' : obGenerator -> Type)
  (Sense01_Param_F'' : Sense01_Param_data Sense00_Param_F'')
  (Param_F'' : obCoMod_Param Sense01_Param_F'')
  (Sense00_Param_F''F' : obGenerator -> Type) (Sense01_Param_F''F' : Sense01_Param_data Sense00_Param_F''F') (Sense1_Param_proj_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F'')
  (Sense1_Param_subst_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F')
  (PParam_F''F' : pseudoCode_PParam Sense1_Param_proj_ff_ Sense1_Param_subst_ff_)
  (param_ff_ : 'CoMod__( Param_F'' ~> Param_F' @_ PParam_F''F')),

  'CoMod__( Param_F'' ~> Param_F @_ Compos_pseudoCode_PParam PParam_F'F PParam_F''F' )

(** -----solution morphisms----- **)
| Unit_PParam : forall Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
    'CoMod__( Param_F ~> Param_F @_ Unit_pseudoCode_PParam Sense01_Param_F )

| ViewMor_PParam :
 forall (Q : obParametrizator) (G : obGenerator) (p : 'Parametrizator(  Parameter0 G ~> Q (** | Q_Viewing ... only the viewing elements*) )) (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (pp : viewingDefault_Constructel_Param p cons_inFibre_P),
      'CoMod__( View_Param P ~> View_Param Q @_ (ViewMor_pseudoCode_PParam pp) )

| Constructing_PParam_default :
 forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),

 forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),

    'CoMod__( View_Param P ~> ViewingFunctor_Param_default Param_SubstF
                   @_ (AtMember_PParam (Constructing_pseudoCode_PParam_default Param_SubstF ) cons_paramlocal ))

| ViewedFunctor1_PParam_default : forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
    forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
  (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
  (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
  (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
  (param_ff : 'CoMod__( Param_E ~> Param_F  @_ PParam_EF )),

  'CoMod__( ViewedFunctor_Param_default Param_E ~> ViewedFunctor_Param_default Param_F  @_ ViewedFunctor1_pseudoCode_PParam_default PParam_EF )

| UnitViewedFunctor_PParam_default :
forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
  (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
  (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
  (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
  (param_ff : 'CoMod__( Param_E ~> Param_F  @_ PParam_EF )),

  'CoMod__( Param_E ~> ViewedFunctor_Param_default Param_F  @_ (Compos_pseudoCode_PParam (UnitViewedFunctor_pseudoCode_PParam_default' _ ) PParam_EF) )

| Destructing_PParam_default :
 forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),

forall (Sense00_Param_K : obGenerator -> Type)
  (Sense01_Param_K : Sense01_Param_data Sense00_Param_K),

forall (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
      Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
  (Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
  (PParam_ee_ :  pseudoCode_PParam_Family Sense1_Param_ee_morphism),

forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),

forall (Sense00_Param_ee'__ : obGenerator -> Type) (Sense01_Param_ee'__ : Sense01_Param_data Sense00_Param_ee'__)
  (Sense1_Param_proj_ee'__ : Sense1_Param_data Sense01_Param_ee'__ Sense01_Param_K) (Sense1_Param_subst_ee'__ : Sense1_Param_data Sense01_Param_ee'__ Sense01_Param_E)
  (PParam_ee'__ : pseudoCode_PParam Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__),

forall (Sense00_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), obGenerator -> Type)
(Sense01_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), Sense01_Param_data (Sense00_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subst0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                    (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal )),

forall (Sense1_Param_reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__
                                                 (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal))
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__
                                                  (Sense1_Param_ee_ G paramlocal))
      (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal)
                          ~> PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))),

  'CoMod__( ViewingFunctor_Param_default Param_SubstF ~> ViewedFunctor_Param_default Param_E
      @_ (Compos_pseudoCode_PParam (ViewedFunctor1_pseudoCode_PParam_default PParam_ee'__) (Destructing_pseudoCode_PParam_default' Param_SubstF PParam_ee_)) )

| Formatting : (**MEMO: contrast this to comprehension-categry / category-with-family / natural-model ,
 where the representability conditions relates type-theory style (terms are section morphism) as-corresponding-to
 locally-catesian-closed style (arrows are morphism over one object) ,
now here section morphism (from terminal) is generalized/polymorph as morphism from any shape object ,
and morphism over one object is generalized/polymorph as morphism parametrized over any span morphism *)
forall (Sense00_Form_E : obGenerator -> Type)
(Sense01_Form_E : Sense01_data Sense00_Form_E)
(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)
(Sense00_Form_F : obGenerator -> Type)
(Sense01_Form_F : Sense01_data Sense00_Form_F)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
(F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)

(Sense00_Param_EF : obGenerator -> Type)
(Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
(Sense1_Param_proj : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
(PParam_EF : pseudoCode_PParam  Sense1_Param_proj Sense1_Param_subst)

(Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
(Form_ff : pseudoCode Sense1_Form_ff)
(ff : 'CoMod( E ~> F @_  PParam_EF @^ Form_ff ))

(Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)
(Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F)

(Sense00_Param_EF' : obGenerator -> Type)
(Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF')
(Sense1_Param_proj' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
(Sense1_Param_subst' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F)
(PParam_EF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
(param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF' ))

(Sense1_Param_reparam_EF : reparamCongr Sense1_Param_proj Sense1_Param_subst Sense1_Param_proj' Sense1_Param_subst')
(reparam_EF :  'CoMod_$( PParam_EF ~> PParam_EF' @_ Sense1_Param_reparam_EF ))

(Sense00_Param_D : obGenerator -> Type)
(Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
(Param_D : obCoMod_Param Sense01_Param_D)
(Sense00_Param_DE : obGenerator -> Type)
(Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
(Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D)
(Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
(PParam_DE : pseudoCode_PParam  Sense1_Param_proj_ee Sense1_Param_subst_ee)
(param_ee : 'CoMod__( Param_D ~> Param_E @_ PParam_DE )),

  'CoMod__( Param_D ~> Format F Param_F @_ (Compos_pseudoCode_PParam (Formatting_pseudoCode_PParam' PParam_EF Form_ff) PParam_DE) )

where "''CoMod__' (  Param_E  ~>  Param_F  @_ PParam_EF )" :=
        (@morCoMod_PParam _ _ Param_E _ _ Param_F _ _ _ _ PParam_EF ) : poly_scope .

Notation "ff_ o>CoMod__ ff'" := (@Compos_PParam _ _ _ _ _ _ _ _ _ _ _ ff' _ _ _ _ _ _ _ _ ff_ )
                                  (at level 40 , ff' at next level , left associativity) : poly_scope.
Notation "ff_ o>CoMod ff'" := (@Compos _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff' _ _ _ _ _ _ _ _ _ _ _ _ _ ff_ )
                                (at level 40, left associativity) : poly_scope.
(** # #
#+END_SRC

* Grammatical presentation of the parameter-congruences (reparametrization) with the form-congruences (conversion) , with their interfaces for the (Compos-)composition-monoidal associativity-coherences

** Interface for the (Compos-)composition-monoidal associativity-coherences of the parameter-congruences (reparametrization) with the form-congruences (conversion)

#+BEGIN_SRC coq :exports both :results silent # # **)
Module Export Coherence_Monoidal .
Parameter coh_congrPseudoCode_PParam : forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E),
 forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
 forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
 forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
 forall (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0) ,
 forall Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E,
 forall Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F,
 forall (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0),
 forall (Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                             Sense1_Param_proj_ff0 Sense1_Param_subst_ff0),
 forall (reparam_rr :  'CoMod_$( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_rr )),
 forall (Sense1_Param_reparam_rr' : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                             Sense1_Param_proj_ff0 Sense1_Param_subst_ff0),
 forall (reparam_rr' :  'CoMod_$( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_rr' )), Prop .

Infix "~~_$" := coh_congrPseudoCode_PParam (at level 70) .

Parameter Refl_coh_congrPseudoCode_PParam : forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E),
 forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
 forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
 forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
 forall (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0) ,
 forall Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E,
 forall Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F,
 forall (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0),
 forall (Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                             Sense1_Param_proj_ff0 Sense1_Param_subst_ff0),
 forall (reparam_rr :  'CoMod_$( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_rr )),
   reparam_rr ~~_$ reparam_rr .

Hint Resolve Refl_coh_congrPseudoCode_PParam : core .

Parameter coh_congrPseudoCode : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
                             (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
                             (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E),
    forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
      (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F),
    forall (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
      (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
      (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F),
    forall (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Form_ff : pseudoCode Sense1_Form_ff),
    forall (Sense00_Param_EF' : obGenerator -> Type) (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF')
      (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
      (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F),
    forall (Sense1_Form_ff' : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff' Sense1_Param_subst_ff')
      (Form_ff' : pseudoCode Sense1_Form_ff'),
    forall (Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                                Sense1_Param_proj_ff' Sense1_Param_subst_ff')
      (Congr_congr_ff : Congr_data Sense1_Form_ff Sense1_Form_ff' Sense1_Param_reparam_rr)
      (congr_ff : 'CoMod$( Form_ff ~> Form_ff' @_ Congr_congr_ff )),
    forall (Sense1_Param_reparam_rr0 : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                                 Sense1_Param_proj_ff' Sense1_Param_subst_ff'),
    forall(Congr_congr_ff0 : Congr_data Sense1_Form_ff Sense1_Form_ff' Sense1_Param_reparam_rr0)
     (congr_ff0 : 'CoMod$( Form_ff ~> Form_ff' @_ Congr_congr_ff0 )), Prop .

Infix "~~$" := coh_congrPseudoCode (at level 70) .

Parameter Refl_coh_congrPseudoCode :
  forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
    (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
    (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E),
  forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
      (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F),
    forall (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
      (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
      (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F),
    forall (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Form_ff : pseudoCode Sense1_Form_ff),
    forall (Sense00_Param_EF' : obGenerator -> Type) (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF')
      (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
      (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F),
    forall (Sense1_Form_ff' : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff' Sense1_Param_subst_ff')
      (Form_ff' : pseudoCode Sense1_Form_ff'),
    forall (Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                                Sense1_Param_proj_ff' Sense1_Param_subst_ff')
      (Congr_congr_ff : Congr_data Sense1_Form_ff Sense1_Form_ff' Sense1_Param_reparam_rr)
      (congr_ff : 'CoMod$( Form_ff ~> Form_ff' @_ Congr_congr_ff )),
      congr_ff ~~$ congr_ff .

Hint Resolve Refl_coh_congrPseudoCode : core .

Parameter Preorder_coh_congrPseudoCode :
  forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
    (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
    (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E),
  forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F),
    forall (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
      (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
      (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F),
    forall (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Form_ff : pseudoCode Sense1_Form_ff),
    forall (Sense00_Param_EF' : obGenerator -> Type) (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF')
      (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
      (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F),
    forall (Sense1_Form_ff' : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff' Sense1_Param_subst_ff')
      (Form_ff' : pseudoCode Sense1_Form_ff'),
    forall (Sense1_Param_reparam_rr : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                                Sense1_Param_proj_ff' Sense1_Param_subst_ff')
      (Congr_congr_ff : Congr_data Sense1_Form_ff Sense1_Form_ff' Sense1_Param_reparam_rr)
      (congr_ff : 'CoMod$( Form_ff ~> Form_ff' @_ Congr_congr_ff )),
    forall (Sense1_Param_reparam_rr0 : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff
                                                 Sense1_Param_proj_ff' Sense1_Param_subst_ff'),
    forall(Congr_congr_ff0 : Congr_data Sense1_Form_ff Sense1_Form_ff' Sense1_Param_reparam_rr0)
     (congr_ff0 : 'CoMod$( Form_ff ~> Form_ff' @_ Congr_congr_ff0 )),
      congr_ff ~~$ congr_ff0 .

End Coherence_Monoidal .
(** # #
#+END_SRC

** Grammatical presentation of the parameter-congruences (reparametrization) with the form-congruences (conversion)

#+BEGIN_SRC coq :exports both :results silent # # **)
Reserved Notation "ff0  [  reparam_rr @^ congr_ff  ]<~~  ff" (at level 10 ,  reparam_rr , congr_ff , ff at level 40).
Reserved Notation "param_ff0 [  reparam_rr  ]<~~__ param_ff" (at level 10 , reparam_rr , param_ff at level 40).

(**
TODO: add conversion for the extensionality [Destructing(Constructing)]
*)
Inductive convCoMod : forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
 (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E),
 forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
   (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E),
 forall Sense1_Param_subst_ff (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
   Sense1_Form_ff (Form_ff : pseudoCode Sense1_Form_ff) (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )),
 forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0)
   (Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
   Sense1_Param_subst_ff0 (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
   Sense1_Form_ff0 (Form_ff0 : pseudoCode Sense1_Form_ff0) (ff0 : 'CoMod( E ~> F @_ PParam_EF0 @^ Form_ff0 )),
 forall (Sense1_Param_reparam_EF : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
   (reparam_EF : 'CoMod_$( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_EF ))
   (Congr_congr_ff : Congr_data Sense1_Form_ff Sense1_Form_ff0 Sense1_Param_reparam_EF)
   (congr_ff : 'CoMod$( Form_ff ~> Form_ff0 @_ Congr_congr_ff  )), Prop :=

| convCoMod_Refl :  forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
 (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E),
 forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
   (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E),
 forall Sense1_Param_subst_ff (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
   Sense1_Form_ff (Form_ff : pseudoCode Sense1_Form_ff) (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )),
   ff [ Refl_reparam PParam_EF  @^ Refl_congrPseudoCode Form_ff ]<~~ ff

| convCoMod_Trans :  forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
 (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E),
 forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
   (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E),
 forall Sense1_Param_subst_ff (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
   Sense1_Form_ff (Form_ff : pseudoCode Sense1_Form_ff) (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )),
 forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0)
   (Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
   Sense1_Param_subst_ff0 (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
   Sense1_Form_ff0 (Form_ff0 : pseudoCode Sense1_Form_ff0) (ff0 : 'CoMod( E ~> F @_ PParam_EF0 @^ Form_ff0 )),
 forall (Sense1_Param_reparam_EF : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
   (reparam_EF : 'CoMod_$( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_EF ))
   (Congr_congr_ff : Congr_data Sense1_Form_ff Sense1_Form_ff0 Sense1_Param_reparam_EF)
   (congr_ff : 'CoMod$( Form_ff ~> Form_ff0 @_ Congr_congr_ff  )),
   ff0 [ reparam_EF  @^ congr_ff ]<~~ ff ->
 forall Sense00_Param_EF0' (Sense01_Param_EF0' : Sense01_Param_data Sense00_Param_EF0')
   (Sense1_Param_proj_ff0' : Sense1_Param_data Sense01_Param_EF0' Sense01_Param_E)
   Sense1_Param_subst_ff0' (PParam_EF0' : pseudoCode_PParam Sense1_Param_proj_ff0' Sense1_Param_subst_ff0')
   Sense1_Form_ff0' (Form_ff0' : pseudoCode Sense1_Form_ff0') (ff0' : 'CoMod( E ~> F @_ PParam_EF0' @^ Form_ff0' )),
 forall (Sense1_Param_reparam_EF0 : reparamCongr Sense1_Param_proj_ff0 Sense1_Param_subst_ff0 Sense1_Param_proj_ff0' Sense1_Param_subst_ff0')
   (reparam_EF0 : 'CoMod_$( PParam_EF0 ~> PParam_EF0' @_ Sense1_Param_reparam_EF0 ))
   (Congr_congr_ff0 : Congr_data Sense1_Form_ff0 Sense1_Form_ff0' Sense1_Param_reparam_EF0)
   (congr_ff0 : 'CoMod$( Form_ff0 ~> Form_ff0' @_ Congr_congr_ff0  )),
   ff0' [ reparam_EF0  @^ congr_ff0 ]<~~ ff0 ->
   ff0' [ reparam_EF o>_$ reparam_EF0  @^ congr_ff o>$ congr_ff0 ]<~~ ff

| Compos_cong :
 forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
 forall Sense00_Form_F' Sense01_Form_F' Sense00_Param_F' Sense01_Param_F' Sense1_FormParam_F'
   (F' : @obCoMod Sense00_Form_F' Sense01_Form_F' Sense00_Param_F' Sense01_Param_F' Sense1_FormParam_F'),
 forall Sense00_Param_F'F (Sense01_Param_F'F : Sense01_Param_data Sense00_Param_F'F)
   (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F')
   Sense1_Param_subst_ff' (PParam_F'F : pseudoCode_PParam Sense1_Param_proj_ff' Sense1_Param_subst_ff') Sense1_Form_ff'
   (Form_ff' : pseudoCode Sense1_Form_ff')
   (ff' : 'CoMod( F' ~> F @_ PParam_F'F @^ Form_ff' )),

 forall Sense00_Form_F'' Sense01_Form_F'' Sense00_Param_F'' Sense01_Param_F'' Sense1_FormParam_F''
   (F'' : @obCoMod Sense00_Form_F'' Sense01_Form_F'' Sense00_Param_F'' Sense01_Param_F'' Sense1_FormParam_F''),
 forall Sense00_Param_F''F' (Sense01_Param_F''F' : Sense01_Param_data Sense00_Param_F''F')
   (Sense1_Param_proj_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F'')
   Sense1_Param_subst_ff_ (PParam_F''F' : pseudoCode_PParam Sense1_Param_proj_ff_ Sense1_Param_subst_ff_)
   Sense1_Form_ff_ (Form_ff_ : pseudoCode Sense1_Form_ff_)
   (ff_ : 'CoMod( F'' ~> F' @_ PParam_F''F' @^ Form_ff_ )),

 forall Sense00_Param_E'E (Sense01_Param_E'E : Sense01_Param_data Sense00_Param_E'E)
   (Sense1_Param_proj_ee' : Sense1_Param_data Sense01_Param_E'E Sense01_Param_F')
   Sense1_Param_subst_ee' (PParam_E'E : pseudoCode_PParam Sense1_Param_proj_ee' Sense1_Param_subst_ee') Sense1_Form_ee'
   (Form_ee' : pseudoCode Sense1_Form_ee')
   (ee' : 'CoMod( F' ~> F @_ PParam_E'E @^ Form_ee' )),
 forall Sense1_Param_reparam_F'F
   (reparam_F'F : 'CoMod_$(  PParam_F'F  ~>  PParam_E'E  @_ Sense1_Param_reparam_F'F ))
   Congr_congr_ff' (congr_ff' : 'CoMod$( Form_ff' ~> Form_ee' @_ Congr_congr_ff' ) ),
   ee' [ reparam_F'F @^ congr_ff' ]<~~ ff' ->

   forall Sense00_Param_E''E' (Sense01_Param_E''E' : Sense01_Param_data Sense00_Param_E''E')
     (Sense1_Param_proj_ee_ : Sense1_Param_data Sense01_Param_E''E' Sense01_Param_F'')
     Sense1_Param_subst_ee_ (PParam_E''E' : pseudoCode_PParam Sense1_Param_proj_ee_ Sense1_Param_subst_ee_)
     Sense1_Form_ee_ (Form_ee_ : pseudoCode Sense1_Form_ee_)
     (ee_ : 'CoMod( F'' ~> F' @_ PParam_E''E' @^ Form_ee_ )),
   forall Sense1_Param_reparam_F''F'
     (reparam_F''F' : 'CoMod_$(  PParam_F''F'  ~>  PParam_E''E'  @_ Sense1_Param_reparam_F''F' ))
     Congr_congr_ff_ (congr_ff_ : 'CoMod$( Form_ff_ ~> Form_ee_ @_ Congr_congr_ff_ ) ),
     ee_ [ reparam_F''F'  @^ congr_ff_ ]<~~ ff_ ->

     ( ee_ o>CoMod ee' )
       [ Compos_pseudoCode_PParam_cong reparam_F'F reparam_F''F'
            @^ Compos_cong_congrPseudoCode reparam_F'F congr_ff' reparam_F''F' congr_ff_ ]<~~
       ( ff_ o>CoMod ff' )

(**TODO: MEMO:
| ViewMor_cong : (**MEMO: this solution conversion is not used during cut-elimination resolution *)
forall (G H : obGenerator) (g : 'Generator( G ~> H (** | H_Viewing ... only the viewing elements*)))
  (gg : viewingDefault_Constructel_Param_Form g),
forall(g' : 'Generator( G ~> H (** | H_Viewing ... only the viewing elements*)))
  (g'g' : viewingDefault_Constructel_Param_Form g'),
forall (Heqparam : g' = g),

  (**TODO: for now this uses senses, but shall be fully grammatical (using the common sameness at some viewing-intersection) of gg and g'g' *)
  ( ViewMor g'g' )
    [ ViewMor_PParam_cong_reparam (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form gg)
                                 (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form g'g')
                                 (g:=(unitGenerator_reparamCongrGenerator G)) (ViewMor_cong_Heqparam Heqparam)
                                 ( inFibre_transformation_morphism' (InFibre _) )
                                 @^ ViewMor_cong_congrPseudoCode gg g'g' Heqparam ]<~~
    ( ViewMor gg )
*)

(**TODO: MEMO:
| Constructing_default_cong :  (**MEMO: this solution conversion is not used during cut-elimination resolution *)
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

forall (G : obGenerator) (param : Sense00_Param_SubstF G)
  (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
  (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
  (cons_form : constructel_Form F  form),
forall (param' : Sense00_Param_SubstF G) (cons_paramlocal' : constructel_Param Param_SubstF (sval Sense1_Param_subst G param') (Unit_inFibreDefault_Constructel_Param G))
  (form' : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param')
  (cons_form' : constructel_Form F  form'),
  forall (Heqparam : param' = param)
    (Heqform : sval form' = sval form),
    (**TODO: for now this uses senses, but shall be fully grammatical (using the common sameness at some viewing-intersection) of cons_paramlocal and cons_paramlocal' , moreover of cons_form and cons_form' *)
    ( Constructing_default cons_paramlocal' cons_form' )
      [ Constructing_PParam_default_cong_reparam cons_paramlocal cons_paramlocal'
                                                 (f_equal (sval Sense1_Param_subst G ) Heqparam) (eq_refl _)
        @^ Constructing_default_cong_congrPseudoCode cons_paramlocal cons_form cons_paramlocal' cons_form' Heqparam Heqform  ]<~~
      ( Constructing_default cons_paramlocal cons_form )
*)

| ViewedFunctor1_default_cong :
forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense10_FormParam_E
  (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense10_FormParam_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),

forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense10_FormParam_F
  (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense10_FormParam_F)
  (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
forall (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
forall Sense10_Form_ff (Form_ff : pseudoCode Sense10_Form_ff) (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )),

forall Sense00_Param_EF' (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF'),
forall Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E,
forall Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F,
forall (PParam_EF' : pseudoCode_PParam Sense1_Param_proj_ff' Sense1_Param_subst_ff'),
forall (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF' )),

forall Sense1_Param_reparam_EF
  (reparam_EF : 'CoMod_$( PParam_EF  ~> PParam_EF' @_ Sense1_Param_reparam_EF) ),

forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0),
forall Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E,
forall Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F,
forall (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0),
forall Sense10_Form_ff0 (Form_ff0 : pseudoCode Sense10_Form_ff0) (ff0 : 'CoMod( E ~> F @_ PParam_EF0 @^ Form_ff0 )),

forall (Sense1_Param_reparam_conv_ff : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
  (reparam_conv_ff : 'CoMod_$ ( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_conv_ff))
  Congr_congr_conv_ff (congr_conv_ff : 'CoMod$( Form_ff ~> Form_ff0 @_ Congr_congr_conv_ff ) ),
  (  ff0 )
    [ reparam_conv_ff @^ congr_conv_ff ]<~~
      (  ff ) ->

forall Sense00_Param_EF'0 (Sense01_Param_EF'0 : Sense01_Param_data Sense00_Param_EF'0),
forall Sense1_Param_proj_ff'0 : Sense1_Param_data Sense01_Param_EF'0 Sense01_Param_E,
forall Sense1_Param_subst_ff'0 : Sense1_Param_data Sense01_Param_EF'0 Sense01_Param_F,
forall (PParam_EF'0 : pseudoCode_PParam Sense1_Param_proj_ff'0 Sense1_Param_subst_ff'0),
forall (param_ff0 : 'CoMod__( Param_E ~> Param_F @_ PParam_EF'0 )),

forall (Sense1_Param_reparam_conv_param_ff : reparamCongr Sense1_Param_proj_ff' Sense1_Param_subst_ff' Sense1_Param_proj_ff'0 Sense1_Param_subst_ff'0)
  (reparam_conv_param_ff : 'CoMod_$ ( PParam_EF' ~> PParam_EF'0 @_ Sense1_Param_reparam_conv_param_ff)),

  (  param_ff0 )
    [ reparam_conv_param_ff ]<~~__
      (  param_ff ) ->

forall Sense1_Param_reparam_EF0
  (reparam_EF0 : 'CoMod_$( PParam_EF0  ~> PParam_EF'0 @_ Sense1_Param_reparam_EF0) ),

forall (Coh_reparam_EF0 : reparam_EF0 ~~_$ (Rev_reparam reparam_conv_ff) o>_$ (reparam_EF o>_$ reparam_conv_param_ff)),

  ( ViewedFunctor1_default ff0 param_ff0 reparam_EF0)
    [ ViewedFunctor1_PParam_default_cong_reparam reparam_conv_ff @^ ViewedFunctor1_default_cong_congrPseudoCode reparam_conv_ff congr_conv_ff ]<~~
    ( ViewedFunctor1_default ff param_ff reparam_EF)

| UnitViewedFunctor_default_cong'
  : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
      (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
      (Sense10_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense10_FormParam_E)
      (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
      (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Sense10_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense10_FormParam_F)
      (Param_F : obCoMod_Param Sense01_Param_F)
      (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
      (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
      (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Sense10_Form_ff : Sense1_Form_data Sense10_FormParam_E Sense10_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Form_ff : pseudoCode Sense10_Form_ff) (ff : 'CoMod ( E ~> F @_ PParam_EF @^ Form_ff )),

    forall (Sense00_Param_EF0 : obGenerator -> Type) (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0)
      (Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E) (Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F)
      (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
      (Sense10_Form_ff0 : Sense1_Form_data Sense10_FormParam_E Sense10_FormParam_F Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
      (Form_ff0 : pseudoCode Sense10_Form_ff0) (ff0 : 'CoMod ( E ~> F @_ PParam_EF0 @^ Form_ff0 )),

    forall (Sense1_Param_reparam_conv_ff : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
      (reparam_conv_ff : 'CoMod_$ ( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_conv_ff))
      Congr_congr_conv_ff (congr_conv_ff : 'CoMod$( Form_ff ~> Form_ff0 @_ Congr_congr_conv_ff ) ),
      (  ff0 )
        [ reparam_conv_ff @^ congr_conv_ff ]<~~
        (  ff ) ->

  ( UnitViewedFunctor_default Param_F ff0 )
    [ Compos_pseudoCode_PParam_cong (Refl_reparam _) reparam_conv_ff
        @^ Compos_cong_congrPseudoCode (Refl_reparam _) (Refl_congrPseudoCode _) reparam_conv_ff congr_conv_ff ]<~~
    ( UnitViewedFunctor_default Param_F ff )

| Destructing_default_cong''' :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

  forall (Sense00_Param_K : obGenerator -> Type)
(Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
(Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
    Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
(Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
(PParam_ee_ : pseudoCode_PParam_Family Sense1_Param_ee_morphism)

(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)

(Sense00_Param_KE__ : obGenerator -> Type)
(Sense01_Param_KE__ : Sense01_Param_data Sense00_Param_KE__)
(Sense1_Param_proj_ee'__ : Sense1_Param_data Sense01_Param_KE__ Sense01_Param_K)
(Sense1_Param_subst_ee'__ : Sense1_Param_data Sense01_Param_KE__ Sense01_Param_E)
(PParam_ee'__ : pseudoCode_PParam Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__)

(Sense00_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    obGenerator -> Type)
(Sense01_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense01_Param_data (Sense00_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subst0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                       (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal ))

(Sense1_Param_reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__ (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal))
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__ (Sense1_Param_ee_ G paramlocal))
      (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal)
                          ~> PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))

(Sense00_Form_K : obGenerator -> Type)
(Sense01_Form_K : Sense01_data Sense00_Form_K)
(Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)

(Sense1_Form_ee__ :
   forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
     Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K
                       (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                       (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
(Sense1_Form_ee_morphism : Morphism_Form_prop Sense1_Form_ee__)
(Form_ee__ : pseudoCode_Family Sense1_Form_ee_morphism)

(Sense00_Form_E : obGenerator -> Type)
(Sense01_Form_E : Sense01_data Sense00_Form_E)
(Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)

(Sense1_Form_ee'__ : Sense1_Form_data Sense1_FormParam_K Sense1_FormParam_E Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__)
(Form_ee'__ : pseudoCode Sense1_Form_ee'__ )

(Sense00_Param_SubstF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), obGenerator -> Type)
(Sense01_Param_SubstF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), Sense01_Param_data (Sense00_Param_SubstF0__ G param cons_paramlocal form cons_form))
(Sense1_Param_subst0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubstF0__ G param cons_paramlocal form cons_form) (Sense01_Param_View (Parameter0 G)))
(Sense1_Param_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubstF0__ G param cons_paramlocal form cons_form) Sense01_Param_E)
(PParam_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    pseudoCode_PParam (Sense1_Param_subst0__ G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form) )
(Sense1_Form_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_E
                      (Sense1_Param_subst0__  G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form))
(Form_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
pseudoCode (Sense1_Form_ee0__ G param cons_paramlocal form cons_form))
(ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod( View G ~> E @_ (PParam_ee0__ G param cons_paramlocal form cons_form) @^ (Form_ee0__ G param cons_paramlocal form cons_form))),

forall (Sense1_Param_reparam_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
      reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__
                                                               (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                                                               (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__
                                                                (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Param_subst0__ G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form))
(reparam_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal) ~> PParam_ee0__ G param cons_paramlocal form cons_form @_ (Sense1_Param_reparam_ee__ G param cons_paramlocal form cons_form)))
(Congr_congr_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Congr_data (Sense1_Form_Compos (Sense1_Form_ee'__) (Sense1_Form_ee__ G param form)) (Sense1_Form_ee0__ G param cons_paramlocal form cons_form) (Sense1_Param_reparam_ee__ G param cons_paramlocal form cons_form))
(congr_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod$( Compos_pseudoCode PParam_ee'__ Form_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal) (AtMember_Form Form_ee__ cons_paramlocal cons_form) ~> (Form_ee0__ G param cons_paramlocal form cons_form) @_ Congr_congr_ee__ G param cons_paramlocal form cons_form ) ),

forall (Sense1_Param_dd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
    Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
(Sense1_Param_dd_morphism : Morphism_prop Sense1_Param_dd_)
(PParam_dd_ : pseudoCode_PParam_Family Sense1_Param_dd_morphism)

(Sense00_Param_KE'__ : obGenerator -> Type)
(Sense01_Param_KE'__ : Sense01_Param_data Sense00_Param_KE'__)
(Sense1_Param_proj_dd'__ : Sense1_Param_data Sense01_Param_KE'__ Sense01_Param_K)
(Sense1_Param_subst_dd'__ : Sense1_Param_data Sense01_Param_KE'__ Sense01_Param_E)
(PParam_dd'__ : pseudoCode_PParam Sense1_Param_proj_dd'__ Sense1_Param_subst_dd'__)

(Sense00_Param_SubszF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), obGenerator -> Type)
(Sense01_Param_SubszF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), Sense01_Param_data (Sense00_Param_SubszF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subsz0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubszF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_dd0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubszF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_dd0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subsz0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                    (Sense1_Param_dd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(param_dd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_dd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal ))

(Sense1_Param_reparam_dd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_dd'__ (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_dd_ G paramlocal))
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_dd'__ Sense1_Param_subst_dd'__ (Sense1_Param_dd_ G paramlocal))
      (Sense1_Param_subsz0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_dd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(reparam_dd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_dd'__ (AtMember_PParam PParam_dd_ cons_paramlocal)
                          ~> PParam_dd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_dd_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))

(Sense1_Form_dd__ :
   forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
     Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K
                       (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                       (Sense1_Param_dd_ G (sval Sense1_Param_subst G param)))
(Sense1_Form_dd_morphism : Morphism_Form_prop Sense1_Form_dd__)
(Form_dd__ : pseudoCode_Family Sense1_Form_dd_morphism)

(Sense1_Form_dd'__ : Sense1_Form_data Sense1_FormParam_K Sense1_FormParam_E Sense1_Param_proj_dd'__ Sense1_Param_subst_dd'__)
(Form_dd'__ : pseudoCode Sense1_Form_dd'__ )

(Sense00_Param_SubszF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), obGenerator -> Type)
(Sense01_Param_SubszF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), Sense01_Param_data (Sense00_Param_SubszF0__ G param cons_paramlocal form cons_form))
(Sense1_Param_subsz0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubszF0__ G param cons_paramlocal form cons_form) (Sense01_Param_View (Parameter0 G)))
(Sense1_Param_dd0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubszF0__ G param cons_paramlocal form cons_form) Sense01_Param_E)
(PParam_dd0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    pseudoCode_PParam (Sense1_Param_subsz0__ G param cons_paramlocal form cons_form) (Sense1_Param_dd0__ G param cons_paramlocal form cons_form) )
(Sense1_Form_dd0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_E
                      (Sense1_Param_subsz0__  G param cons_paramlocal form cons_form) (Sense1_Param_dd0__ G param cons_paramlocal form cons_form))
(Form_dd0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    pseudoCode (Sense1_Form_dd0__ G param cons_paramlocal form cons_form))
(dd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form),
    'CoMod( View G ~> E @_ (PParam_dd0__ G param cons_paramlocal form cons_form) @^ (Form_dd0__ G param cons_paramlocal form cons_form))),

forall (Sense1_Param_reparam_dd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
      reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_dd'__ (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G)) (Sense1_Param_dd_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_dd'__ Sense1_Param_subst_dd'__ (Sense1_Param_dd_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Param_subsz0__ G param cons_paramlocal form cons_form) (Sense1_Param_dd0__ G param cons_paramlocal form cons_form) )
(reparam_dd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_dd'__ (AtMember_PParam PParam_dd_ cons_paramlocal) ~> PParam_dd0__ G param cons_paramlocal form cons_form @_ (Sense1_Param_reparam_dd__ G param cons_paramlocal form cons_form)))
(Congr_congr_dd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Congr_data (Sense1_Form_Compos (Sense1_Form_dd'__) (Sense1_Form_dd__ G param form)) (Sense1_Form_dd0__ G param cons_paramlocal form cons_form) (Sense1_Param_reparam_dd__ G param cons_paramlocal form cons_form))
(congr_dd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod$( Compos_pseudoCode PParam_dd'__ Form_dd'__ (AtMember_PParam PParam_dd_ cons_paramlocal) (AtMember_Form Form_dd__ cons_paramlocal cons_form) ~> (Form_dd0__ G param cons_paramlocal form cons_form) @_ Congr_congr_dd__ G param cons_paramlocal form cons_form ) ),

forall (Sense1_Param_reparam_eedd0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
      reparamCongr (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                    (Sense1_Param_subsz0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_dd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
  (reparam_eedd0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
      'CoMod_$( PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal
                             ~> PParam_dd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_eedd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))),

forall (conv_param_eedd0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
      (param_dd_ G paramlocal P inFibre_P cons_inFibre_P  cons_paramlocal)
        [ reparam_eedd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal ]<~~__
        (param_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) ),

forall (Sense1_Param_reparam_eedd0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
      reparamCongr (Sense1_Param_subst0__ G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form)
                    (Sense1_Param_subsz0__ G param cons_paramlocal form cons_form) (Sense1_Param_dd0__ G param cons_paramlocal form cons_form))
(reparam_eedd0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod_$( PParam_ee0__ G param cons_paramlocal form cons_form ~> PParam_dd0__ G param cons_paramlocal form cons_form @_ (Sense1_Param_reparam_eedd0__ G param cons_paramlocal form cons_form)))
(Congr_congr_eedd0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Congr_data (Sense1_Form_ee0__ G param cons_paramlocal form cons_form) (Sense1_Form_dd0__ G param cons_paramlocal form cons_form) (Sense1_Param_reparam_eedd0__ G param cons_paramlocal form cons_form))
(congr_eedd0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod$( Form_ee0__ G param cons_paramlocal form cons_form ~> Form_dd0__ G param cons_paramlocal form cons_form @_ Congr_congr_eedd0__ G param cons_paramlocal form cons_form )),

forall (conv_eedd0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form),
    (dd__ G param cons_paramlocal form cons_form)
    [ (reparam_eedd0__ G param cons_paramlocal form cons_form)
        @^ (congr_eedd0__ G param cons_paramlocal form cons_form) ]<~~
    (ee__ G param cons_paramlocal form cons_form)),

forall (Sense1_Param_reparam_eedd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G) (P : obParametrizator) (inFibre_P : inFibre G P),
      reparamCongr (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal)
                  (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_dd_ G paramlocal) )
(reparam_eedd_ :  forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( AtMember_PParam PParam_ee_ cons_paramlocal
                               ~> AtMember_PParam PParam_dd_ cons_paramlocal @_ (Sense1_Param_reparam_eedd_ G paramlocal P inFibre_P))),

forall (Congr_congr_eedd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
                       Congr_data (Sense1_Form_ee__ G param form) (Sense1_Form_dd__ G param form)
                                  (Sense1_Param_reparam_eedd_ _ (sval Sense1_Param_subst G param) _ (InFibre G)))
(congr_eedd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
  (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
  (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
  (cons_form : constructel_Form F  form),
    'CoMod$ ( AtMember_Form Form_ee__ cons_paramlocal cons_form ~> AtMember_Form Form_dd__ cons_paramlocal cons_form @_ Congr_congr_eedd__ G param form )),

forall (Sense1_Param_reparam_ee'dd'__ : reparamCongr Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__ Sense1_Param_proj_dd'__ Sense1_Param_subst_dd'__)
  (reparam_ee'dd'__ : 'CoMod_$( PParam_ee'__  ~> PParam_dd'__ @_ Sense1_Param_reparam_ee'dd'__ ) )
  (Congr_congr_ee'dd'__ : Congr_data Sense1_Form_ee'__ Sense1_Form_dd'__ Sense1_Param_reparam_ee'dd'__)
  (congr_ee'dd'__ : 'CoMod$( Form_ee'__ ~> Form_dd'__ @_ Congr_congr_ee'dd'__ )),

forall (Coh_reparam_eedd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    (reparam_dd_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
        ~~_$ (*to be refl*) ((Rev_reparam (Compos_pseudoCode_PParam_cong reparam_ee'dd'__ (reparam_eedd_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal (*to be refl*))))
                               o>_$ ((reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) o>_$ (reparam_eedd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))))
  (Coh_reparam_eedd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
      (reparam_dd__ G param cons_paramlocal form cons_form)
        ~~_$ (*to be refl*) ((Rev_reparam (Compos_pseudoCode_PParam_cong reparam_ee'dd'__  (reparam_eedd_ G (sval Sense1_Param_subst G param) (Parameter0 G) (InFibre G) (Unit_inFibreDefault_Constructel_Param G) cons_paramlocal)))
                               o>_$ ((reparam_ee__ G param cons_paramlocal form cons_form) o>_$ (reparam_eedd0__ G param cons_paramlocal form cons_form))))
  (Coh_congr_eedd__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
      (congr_dd__ G param cons_paramlocal form cons_form)
        ~~$ (*to be refl*) (Rev_congrPseudoCode (Compos_cong_congrPseudoCode reparam_ee'dd'__ congr_ee'dd'__ (reparam_eedd_ G (sval Sense1_Param_subst G param) (Parameter0 G) (InFibre G) (Unit_inFibreDefault_Constructel_Param G) cons_paramlocal) (congr_eedd__ G param cons_paramlocal form cons_form)))
        o>$ ((congr_ee__ G param cons_paramlocal form cons_form) o>$ (congr_eedd0__ G param cons_paramlocal form cons_form))),

  ( Destructing_default param_dd_ reparam_dd_ dd__ reparam_dd__ congr_dd__ )

    [ (Compos_pseudoCode_PParam_cong (ViewedFunctor1_PParam_default_cong_reparam reparam_ee'dd'__)
                                         (Destructing_pseudoCode_PParam_default_cong_reparam reparam_eedd_ ) )
        @^ (Compos_cong_congrPseudoCode (ViewedFunctor1_PParam_default_cong_reparam reparam_ee'dd'__)
                                           (ViewedFunctor1_default_cong_congrPseudoCode reparam_ee'dd'__ congr_ee'dd'__)
                                           (Destructing_pseudoCode_PParam_default_cong_reparam reparam_eedd_ )
                                           (Destructing_default_cong_congrPseudoCode''' reparam_eedd_ congr_eedd__ ) ) ]<~~

    ( Destructing_default param_ee_ reparam_ee_ ee__ reparam_ee__ congr_ee__ )

| Forget_cong :
 forall (Sense00_Form_F : obGenerator -> Type)
   (Sense01_Form_F : Sense01_data Sense00_Form_F)
   (Sense00_Param_F : obGenerator -> Type)
   (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
   (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
   (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

 forall (Sense00_Param_PiSubstF : obGenerator -> Type)
   (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
   (Param_PiSubstF : @obCoMod_Param Sense00_Param_PiSubstF Sense01_Param_PiSubstF),

 forall (Sense00_Param_SubstF : obGenerator -> Type)
   (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
   (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
   (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF)
   (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst),

 forall (Sense00_Param_SubstF' : obGenerator -> Type)
   (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
   (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF)
   (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
   (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
   (param_forget' : 'CoMod__( Param_PiSubstF ~> Param_F @_ PParam_SubstF' )),

 forall (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst
                                               Sense1_Param_proj' Sense1_Param_subst')
   (reparam_forget' : 'CoMod_$( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )),

 forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
   (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)
   (Sense00_Param_FE : obGenerator -> Type)
   (Sense01_Param_FE : Sense01_Param_data Sense00_Param_FE)
   (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_F)
   Sense1_Param_subst_ee (PParam_FE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee) Sense1_Form_ee
   (Form_ee : pseudoCode Sense1_Form_ee)
   (ee : 'CoMod( F ~> E @_  PParam_FE @^ Form_ee )),

 forall (Sense00_Param_SubstF'0 : obGenerator -> Type)
   (Sense01_Param_SubstF'0 : Sense01_Param_data Sense00_Param_SubstF'0)
   (Sense1_Param_proj'0 : Sense1_Param_data Sense01_Param_SubstF'0 Sense01_Param_PiSubstF)
   (Sense1_Param_subst'0 : Sense1_Param_data Sense01_Param_SubstF'0 Sense01_Param_F)
   (PParam_SubstF'0 : pseudoCode_PParam Sense1_Param_proj'0 Sense1_Param_subst'0)
   (param_forget'0 : 'CoMod__( Param_PiSubstF ~> Param_F @_ PParam_SubstF'0 ) ),

 forall (Sense1_Param_reparam_forget'0 : reparamCongr Sense1_Param_proj Sense1_Param_subst
                                               Sense1_Param_proj'0 Sense1_Param_subst'0)
   (reparam_forget'0 : 'CoMod_$( PParam_SubstF ~> PParam_SubstF'0 @_ Sense1_Param_reparam_forget'0 )),

 forall Sense1_Param_reparam_conv_forget'
   (reparam_conv_forget' : 'CoMod_$(  PParam_SubstF'  ~>  PParam_SubstF'0  @_  Sense1_Param_reparam_conv_forget' )),
   param_forget'0 [ reparam_conv_forget' ]<~~__ param_forget' ->

   forall (Coh_reparam_conv_forget' : reparam_forget'0 ~~_$ ( reparam_forget' o>_$ reparam_conv_forget' )),

 forall (Sense00_Param_FE0 : obGenerator -> Type)
   (Sense01_Param_FE0 : Sense01_Param_data Sense00_Param_FE0)
   (Sense1_Param_proj_ee0 : Sense1_Param_data Sense01_Param_FE0 Sense01_Param_F)
   Sense1_Param_subst_ee0 (PParam_FE0 : pseudoCode_PParam Sense1_Param_proj_ee0 Sense1_Param_subst_ee0) Sense1_Form_ee0
   (Form_ee0 : pseudoCode Sense1_Form_ee0)
   (ee0 : 'CoMod( F ~> E @_  PParam_FE0 @^ Form_ee0 )),

 forall Sense1_Param_reparam_conv_ee
   (reparam_conv_ee : 'CoMod_$(  PParam_FE  ~>  PParam_FE0  @_  Sense1_Param_reparam_conv_ee ))
   Congr_congr_ee (congr_ee : 'CoMod$( Form_ee ~> Form_ee0 @_ Congr_congr_ee )),
   ee0 [ reparam_conv_ee @^ congr_ee ]<~~ ee ->

   (Forget param_forget'0 reparam_forget'0 ee0)
     [ Compos_pseudoCode_PParam_cong reparam_conv_ee (Refl_reparam PParam_SubstF)
       @^ ( Compos_cong_congrPseudoCode reparam_conv_ee congr_ee (Refl_reparam PParam_SubstF)
                                           (Refl_congrPseudoCode (Forget_pseudoCode Sense1_FormParam_F PParam_SubstF)) ) ]<~~
     (Forget param_forget' reparam_forget' ee)

| Remember_cong :
 forall (Sense00_Form_F : obGenerator -> Type)
   (Sense01_Form_F : Sense01_data Sense00_Form_F)
   (Sense00_Param_F : obGenerator -> Type)
   (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
   (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
   (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

 forall (Sense00_Param_PiSubstF : obGenerator -> Type)
   (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
   (Param_PiSubstF : @obCoMod_Param Sense00_Param_PiSubstF Sense01_Param_PiSubstF),

 forall (Sense00_Param_SubstF : obGenerator -> Type)
   (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
   (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
   (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF)
   (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst),

 forall (Sense00_Param_SubstF' : obGenerator -> Type)
   (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
   (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF)
   (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
   (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
   (param_forget' : 'CoMod__( Param_PiSubstF ~> Param_F @_ PParam_SubstF' ) ),

 forall (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst
                                               Sense1_Param_proj' Sense1_Param_subst')
   (reparam_forget' : 'CoMod_$( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )),

 forall (Sense00_Form_L : obGenerator -> Type)
   (Sense01_Form_L : Sense01_data Sense00_Form_L)
   (Sense00_Param_L : obGenerator -> Type)
   (Sense01_Param_L : Sense01_Param_data Sense00_Param_L)
   (Sense1_FormParam_L : Sense1_FormParam_data Sense01_Form_L Sense01_Param_L)
   (L : @obCoMod Sense00_Form_L Sense01_Form_L Sense00_Param_L Sense01_Param_L Sense1_FormParam_L)
   (Sense00_Param_LF : obGenerator -> Type)
   (Sense01_Param_LF : Sense01_Param_data Sense00_Param_LF)
   (Sense1_Param_subst_ll : Sense1_Param_data Sense01_Param_LF Sense01_Param_F)
   (Sense1_Param_proj_ll : Sense1_Param_data Sense01_Param_LF Sense01_Param_L)
   (PParam_LF : pseudoCode_PParam Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (Sense1_Form_ll : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_F Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (Form_ll : pseudoCode Sense1_Form_ll)
   (ll : 'CoMod( L ~> F @_ PParam_LF @^ Form_ll )),

 forall (Sense00_Param_LPiSubstF : obGenerator -> Type)
   (Sense01_Param_LPiSubstF : Sense01_Param_data Sense00_Param_LPiSubstF)
   (Sense1_Param_LPiSubstF_subst : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_PiSubstF)
   (Sense1_Param_LPiSubstF_proj : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_L)
   (PParam_LPiSubstF : pseudoCode_PParam Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst),
 forall (Sense00_Form_LF : obGenerator -> Type)
   (Sense01_Form_LF : Sense01_data Sense00_Form_LF)
   (Sense1_FormParam_LF : Sense1_FormParam_data Sense01_Form_LF Sense01_Param_PiSubstF)
   (Sense1_Form_ll' : Sense1_Form_data Sense1_FormParam_LF Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
   (Form_ll' : pseudoCode Sense1_Form_ll')
   (Sense1_Form_ll_ : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_LF Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst)
   (Form_ll_ : pseudoCode Sense1_Form_ll_),

 forall (Sense1_Param_reparam_remember : reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst)
                                             (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj Sense1_Param_subst Sense1_Param_LPiSubstF_subst) Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (reparam_remember : 'CoMod_$( (Compos_pseudoCode_PParam PParam_SubstF PParam_LPiSubstF)
                                   ~> PParam_LF @_ Sense1_Param_reparam_remember ) ),
 forall (Congr_congr_ll : Congr_data (Sense1_Form_Compos Sense1_Form_ll' Sense1_Form_ll_) Sense1_Form_ll Sense1_Param_reparam_remember)
   (congr_ll : 'CoMod$( (Compos_pseudoCode PParam_SubstF Form_ll' PParam_LPiSubstF Form_ll_) ~> Form_ll @_ Congr_congr_ll ) ),

 forall (Sense00_Param_SubstF'0 : obGenerator -> Type)
   (Sense01_Param_SubstF'0 : Sense01_Param_data Sense00_Param_SubstF'0)
   (Sense1_Param_proj'0 : Sense1_Param_data Sense01_Param_SubstF'0 Sense01_Param_PiSubstF)
   (Sense1_Param_subst'0 : Sense1_Param_data Sense01_Param_SubstF'0 Sense01_Param_F)
   (PParam_SubstF'0 : pseudoCode_PParam Sense1_Param_proj'0 Sense1_Param_subst'0)
   (param_forget'0 : 'CoMod__( Param_PiSubstF ~> Param_F @_ PParam_SubstF'0 ) ),

 forall (Sense1_Param_reparam_forget'0 : reparamCongr Sense1_Param_proj Sense1_Param_subst
                                               Sense1_Param_proj'0 Sense1_Param_subst'0)
   (reparam_forget'0 : 'CoMod_$( PParam_SubstF ~> PParam_SubstF'0 @_ Sense1_Param_reparam_forget'0 )),

 forall Sense1_Param_reparam_conv_forget'
   (reparam_conv_forget' : 'CoMod_$(  PParam_SubstF'  ~>  PParam_SubstF'0  @_  Sense1_Param_reparam_conv_forget' )),
   param_forget'0 [ reparam_conv_forget' ]<~~__ param_forget' ->

 forall (Sense00_Param_LF0 : obGenerator -> Type)
   (Sense01_Param_LF0 : Sense01_Param_data Sense00_Param_LF0)
   (Sense1_Param_subst_ll0 : Sense1_Param_data Sense01_Param_LF0 Sense01_Param_F)
   (Sense1_Param_proj_ll0 : Sense1_Param_data Sense01_Param_LF0 Sense01_Param_L)
   (PParam_LF0 : pseudoCode_PParam Sense1_Param_proj_ll0 Sense1_Param_subst_ll0)
   (Sense1_Form_ll0 : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_F Sense1_Param_proj_ll0 Sense1_Param_subst_ll0)
   (Form_ll0 : pseudoCode Sense1_Form_ll0)
   (ll0 : 'CoMod( L ~> F @_ PParam_LF0 @^ Form_ll0 )),

 forall Sense1_Param_reparam_conv_ll
   (reparam_conv_ll : 'CoMod_$(  PParam_LF  ~>  PParam_LF0  @_  Sense1_Param_reparam_conv_ll ))
   Congr_congr_conv_ll (congr_conv_ll : 'CoMod$( Form_ll ~> Form_ll0 @_ Congr_congr_conv_ll )),
   ll0 [ reparam_conv_ll @^ congr_conv_ll ]<~~ ll ->

 forall (Sense00_Param_LPiSubstF0 : obGenerator -> Type)
   (Sense01_Param_LPiSubstF0 : Sense01_Param_data Sense00_Param_LPiSubstF0)
   (Sense1_Param_LPiSubstF_subst0 : Sense1_Param_data Sense01_Param_LPiSubstF0 Sense01_Param_PiSubstF)
   (Sense1_Param_LPiSubstF_proj0 : Sense1_Param_data Sense01_Param_LPiSubstF0 Sense01_Param_L)
   (PParam_LPiSubstF0 : pseudoCode_PParam Sense1_Param_LPiSubstF_proj0 Sense1_Param_LPiSubstF_subst0),
 forall (Sense1_Form_ll'0 : Sense1_Form_data Sense1_FormParam_LF Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
   (Form_ll'0 : pseudoCode Sense1_Form_ll'0)
   (Sense1_Form_ll_0 : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_LF Sense1_Param_LPiSubstF_proj0 Sense1_Param_LPiSubstF_subst0)
   (Form_ll_0 : pseudoCode Sense1_Form_ll_0),

 forall (Sense1_Param_reparam_remember0 : reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj Sense1_Param_LPiSubstF_proj0 Sense1_Param_LPiSubstF_subst0)
                                         (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj Sense1_Param_subst Sense1_Param_LPiSubstF_subst0) Sense1_Param_proj_ll0 Sense1_Param_subst_ll0)
   (reparam_remember0 : 'CoMod_$( (Compos_pseudoCode_PParam PParam_SubstF PParam_LPiSubstF0)
                                   ~>  PParam_LF0 @_ Sense1_Param_reparam_remember0 ) ),
 forall (Congr_congr_ll0 : Congr_data (Sense1_Form_Compos Sense1_Form_ll'0 Sense1_Form_ll_0) Sense1_Form_ll0 Sense1_Param_reparam_remember0)
   (congr_ll0 : 'CoMod$( (Compos_pseudoCode PParam_SubstF Form_ll'0 PParam_LPiSubstF0 Form_ll_0) ~> Form_ll0 @_ Congr_congr_ll0 ) ),

 forall (Sense1_Param_reparam_LPiSubstF : reparamCongr _ _ _ _ )
   (reparam_LPiSubstF : 'CoMod_$( PParam_LPiSubstF ~> PParam_LPiSubstF0 @_ Sense1_Param_reparam_LPiSubstF ) )
   (Congr_congr_ll_ll_0 : Congr_data Sense1_Form_ll_ Sense1_Form_ll_0 Sense1_Param_reparam_LPiSubstF)
   (congr_ll_ll_0 : 'CoMod$( Form_ll_ ~> Form_ll_0 @_ Congr_congr_ll_ll_0 ) ),

 forall (Congr_congr_ll'll'0 : Congr_data Sense1_Form_ll' Sense1_Form_ll'0 (reparamCongr_Refl _ _))
   (congr_ll'll'0 : 'CoMod$( Form_ll' ~> Form_ll'0 @_ Congr_congr_ll'll'0 ) ),

 forall (Coh_reparam_conv_forget' : reparam_forget'0 ~~_$ ( reparam_forget' o>_$ reparam_conv_forget' ))
   (Coh_reparam_remember0 : (reparam_remember0)
                              ~~_$ ( (Rev_reparam (Compos_pseudoCode_PParam_cong (Refl_reparam _) reparam_LPiSubstF))
                                       o>_$ (reparam_remember o>_$ reparam_conv_ll) ))
   (Coh_congr_ll0 : congr_ll0 ~~$ ( (Rev_congrPseudoCode (Compos_cong_congrPseudoCode (Refl_reparam _) congr_ll'll'0 reparam_LPiSubstF congr_ll_ll_0 ))
                                      o>$ (congr_ll o>$ congr_conv_ll) )),

   (** /!\ YES /!\ *)
   ( Remember param_forget'0 reparam_forget'0 ll0 reparam_remember0 congr_ll0 )
     [  ( Compos_pseudoCode_PParam_cong (Refl_reparam _) reparam_LPiSubstF )
          @^ ( Compos_cong_congrPseudoCode  (Refl_reparam _) (Remember_cong_congrPseudoCode PParam_SubstF  congr_ll'll'0) reparam_LPiSubstF congr_ll_ll_0 ) ]<~~
     ( Remember param_forget' reparam_forget' ll reparam_remember congr_ll )

| morCoMod_comp_Unit : forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
 (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E),
 forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
   (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E),
 forall Sense1_Param_subst_ff (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
   Sense1_Form_ff (Form_ff : pseudoCode Sense1_Form_ff) (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )),

   ( ff )
     [ morCoMod_comp_Unit_reparam PParam_EF @^ morCoMod_comp_Unit_congrPseudoCode PParam_EF Form_ff ]<~~
     ( ff o>CoMod (Unit F) )

| Unit_comp_morCoMod : forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
 (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E),
 forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
   (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E),
 forall Sense1_Param_subst_ff (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
   Sense1_Form_ff (Form_ff : pseudoCode Sense1_Form_ff) (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )),

   ( ff )
     [ Unit_comp_morCoMod_reparam PParam_EF @^ Unit_comp_morCoMod_congrPseudoCode PParam_EF Form_ff ]<~~
     ( (Unit E) o>CoMod ff  )

| ViewMor_comp_ViewMor' :
    forall (G H : obGenerator) (g : 'Generator( G ~> H )) (gg : viewingDefault_Constructel_Param_Form g),
    forall (G' : obGenerator) (g' : 'Generator( G' ~> G )) (g'g' : viewingDefault_Constructel_Param_Form g'),

      ( ViewMor (g := ( g' o>Generator g )) (viewingDefault_Constructel_Param_Form_action gg g'g') )
        [ ViewMor_PParam_comp_ViewMor_PParam_reparam (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form gg)
                                                   (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form g'g')
         o>_$ (**MEMO: keep this factorization through the lower/PParam  [ViewMor_PParam_comp_ViewMor_PParam_reparam] *)
            (**TODO: for now this uses senses, but shall be fully grammatical (using the common sameness at some viewing-intersection) *)
            (ViewMor_PParam_cong_reparam (viewingDefault_Constructel_Param_action (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form gg) (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form g'g'))
                                          (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form (viewingDefault_Constructel_Param_Form_action gg g'g'))
                                          (g:= unitGenerator_reparamCongrGenerator _)
                                          (reparamCongr_Heqparam_ViewMor_comp_ViewMor g g')
                                          (inFibre_transformation_morphism' _)  )
            @^ ViewMor_comp_ViewMor_congrPseudoCode' gg g'g' ]<~~
        (( ViewMor g'g' ) o>CoMod ( ViewMor gg ))

| ViewMor_comp_Constructing_default :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

forall (G : obGenerator) (param : Sense00_Param_SubstF G)
  (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
  (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
  (cons_form : constructel_Form F  form),
forall (G' : obGenerator) (g : 'Generator( G' ~> G )) (gg : viewingDefault_Constructel_Param_Form g),

  (Constructing_default (form := (g o>GeneratorAtParam_ form))
                       ( ( constructel_Param_action cons_paramlocal (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form gg) (constructel_Form_action_transp_Heq Sense1_Param_subst param g) ) )
                       ( constructel_Form_action cons_form gg))
    [ (ViewMor_PParam_comp_Constructing_PParam_default_reparam cons_paramlocal (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form gg) )
          o>_$ (**MEMO: keep this factorization through the lower/PParam  [ViewMor_PParam_comp_Constructing_PParam_default_reparam] *)
             (**TODO: for now this uses senses, but shall be fully grammatical (using the common sameness at some viewing-intersection) *)
             (Constructing_PParam_default_cong_reparam (constructel_Param_action cons_paramlocal (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form gg) (eq_refl _))
              ( (constructel_Param_action cons_paramlocal (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form gg) (constructel_Form_action_transp_Heq Sense1_Param_subst param g)) )
              (ViewMor_comp_Constructing_default_Heq Sense1_Param_subst param g) (erefl (sval (InFibre G')).1))
             @^ (ViewMor_comp_Constructing_default_congrPseudoCode cons_paramlocal cons_form gg) ]<~~
      (ViewMor gg o>CoMod Constructing_default cons_paramlocal cons_form )

| UnitViewedFunctor_default_morphism'
  : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
      (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
      (Sense10_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense10_FormParam_E)
      (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
      (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Sense10_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense10_FormParam_F)
      (Param_F : obCoMod_Param Sense01_Param_F)
      (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
      (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
      (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Sense10_Form_ff : Sense1_Form_data Sense10_FormParam_E Sense10_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Form_ff : pseudoCode Sense10_Form_ff) (ff : 'CoMod ( E ~> F @_ PParam_EF @^ Form_ff )),

    forall (Sense00_Form_D : obGenerator -> Type) (Sense01_Form_D : Sense01_data Sense00_Form_D)
      (Sense00_Param_D : obGenerator -> Type) (Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
      (Sense10_FormParam_D : Sense1_FormParam_data Sense01_Form_D Sense01_Param_D) (D : obCoMod Sense10_FormParam_D),

    forall Sense00_Param_DE (Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
      (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D)
      (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
      (PParam_DE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee)
      (Sense10_Form_ee : Sense1_Form_data Sense10_FormParam_D Sense10_FormParam_E Sense1_Param_proj_ee Sense1_Param_subst_ee)
      (Form_ee : pseudoCode Sense10_Form_ee) (ee : 'CoMod ( D ~> E @_ PParam_DE @^ Form_ee )),

        ( UnitViewedFunctor_default Param_F ( ee o>CoMod ff ) )
          [ (Assoc_reparam _ _ _)  @^ (Assoc_congrPseudoCode _ _ _ _ _ _) ]<~~
          ( ee o>CoMod ( UnitViewedFunctor_default Param_F ff ) )

| UnitViewedFunctor_default_morphismPost' :
forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense10_FormParam_E
  (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense10_FormParam_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),

forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense10_FormParam_F
  (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense10_FormParam_F)
  (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
forall (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
forall Sense10_Form_ff (Form_ff : pseudoCode Sense10_Form_ff) (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )),

forall Sense00_Param_EF' (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF'),
forall Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E,
forall Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F,
forall (PParam_EF' : pseudoCode_PParam Sense1_Param_proj_ff' Sense1_Param_subst_ff'),
forall (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF' )),

forall Sense1_Param_reparam_EF
  (reparam_EF : 'CoMod_$( PParam_EF  ~> PParam_EF' @_ Sense1_Param_reparam_EF) ),

forall (Sense00_Form_D : obGenerator -> Type) (Sense01_Form_D : Sense01_data Sense00_Form_D)
  (Sense00_Param_D : obGenerator -> Type) (Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
  (Sense10_FormParam_D : Sense1_FormParam_data Sense01_Form_D Sense01_Param_D) (D : obCoMod Sense10_FormParam_D),

forall Sense00_Param_DE (Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
  (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D)
  (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
  (PParam_DE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee)
  (Sense10_Form_ee : Sense1_Form_data Sense10_FormParam_D Sense10_FormParam_E Sense1_Param_proj_ee Sense1_Param_subst_ee)
  (Form_ee : pseudoCode Sense10_Form_ee) (ee : 'CoMod ( D ~> E @_ PParam_DE @^ Form_ee )),

  (  UnitViewedFunctor_default Param_F ( ee o>CoMod ff ) )
      [  (Rev_reparam (Assoc_reparam _ _ _))
          o>_$ ( Compos_pseudoCode_PParam_cong (UnitViewedFunctor_PParam_default_morphismPost_reparam' PParam_EF) (Refl_reparam PParam_DE) )
             o>_$ (Assoc_reparam _ _ _)
       @^ (Rev_congrPseudoCode (Assoc_congrPseudoCode _ _ _ _ _ _))
          o>$ ( Compos_cong_congrPseudoCode (UnitViewedFunctor_PParam_default_morphismPost_reparam' PParam_EF) (UnitViewedFunctor_default_morphismPost_congrPseudoCode' PParam_EF Form_ff) (Refl_reparam PParam_DE) (Refl_congrPseudoCode Form_ee) )
             o>$ (Assoc_congrPseudoCode _ _ _ _ _ _)  ]<~~
      ( ( UnitViewedFunctor_default Param_E ee ) o>CoMod ( ViewedFunctor1_default ff param_ff reparam_EF ) )

| ViewedFunctor1_default_morphism :
forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense10_FormParam_E
  (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense10_FormParam_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),

forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense10_FormParam_F
  (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense10_FormParam_F)
  (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
forall (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
forall Sense10_Form_ff (Form_ff : pseudoCode Sense10_Form_ff) (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )),

forall Sense00_Param_EF' (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF'),
forall Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E,
forall Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F,
forall (PParam_EF' : pseudoCode_PParam Sense1_Param_proj_ff' Sense1_Param_subst_ff'),
forall (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF' )),

forall Sense1_Param_reparam_EF
  (reparam_EF : 'CoMod_$( PParam_EF  ~> PParam_EF' @_ Sense1_Param_reparam_EF) ),

forall (Sense00_Form_D : obGenerator -> Type) (Sense01_Form_D : Sense01_data Sense00_Form_D)
  (Sense00_Param_D : obGenerator -> Type) (Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
  (Sense10_FormParam_D : Sense1_FormParam_data Sense01_Form_D Sense01_Param_D) (D : obCoMod Sense10_FormParam_D)
  (Param_D : @obCoMod_Param Sense00_Param_D Sense01_Param_D),

forall Sense00_Param_DE (Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
  (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D)
  (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
  (PParam_DE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee)
  (Sense10_Form_ee : Sense1_Form_data Sense10_FormParam_D Sense10_FormParam_E Sense1_Param_proj_ee Sense1_Param_subst_ee)
  (Form_ee : pseudoCode Sense10_Form_ee) (ee : 'CoMod ( D ~> E @_ PParam_DE @^ Form_ee )),

forall Sense00_Param_DE' (Sense01_Param_DE' : Sense01_Param_data Sense00_Param_DE'),
forall Sense1_Param_proj_ee' : Sense1_Param_data Sense01_Param_DE' Sense01_Param_D,
forall Sense1_Param_subst_ee' : Sense1_Param_data Sense01_Param_DE' Sense01_Param_E,
forall (PParam_DE' : pseudoCode_PParam Sense1_Param_proj_ee' Sense1_Param_subst_ee'),
forall (param_ee : 'CoMod__( Param_D ~> Param_E @_ PParam_DE' )),

forall Sense1_Param_reparam_DE
  (reparam_DE : 'CoMod_$( PParam_DE  ~> PParam_DE' @_ Sense1_Param_reparam_DE) ),

    ( ViewedFunctor1_default ( ee o>CoMod ff ) ( param_ee o>CoMod__ param_ff ) ( Compos_pseudoCode_PParam_cong reparam_EF reparam_DE ) )
      [ ViewedFunctor1_PParam_default_morphism_reparam PParam_EF PParam_DE
          @^ ViewedFunctor1_default_morphism_congrPseudoCode PParam_EF Form_ff PParam_DE Form_ee ]<~~
      ( ( ViewedFunctor1_default ee param_ee reparam_DE ) o>CoMod ( ViewedFunctor1_default ff param_ff reparam_EF ) )

| Destructing_default_morphism' :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

  forall (Sense00_Param_K : obGenerator -> Type)
(Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
(Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
    Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
(Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
(PParam_ee_ : pseudoCode_PParam_Family Sense1_Param_ee_morphism)

(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)

(Sense00_Param_KE__ : obGenerator -> Type)
(Sense01_Param_KE__ : Sense01_Param_data Sense00_Param_KE__)
(Sense1_Param_proj_ee'__ : Sense1_Param_data Sense01_Param_KE__ Sense01_Param_K)
(Sense1_Param_subst_ee'__ : Sense1_Param_data Sense01_Param_KE__ Sense01_Param_E)
(PParam_ee'__ : pseudoCode_PParam Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__)

(Sense00_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    obGenerator -> Type)
(Sense01_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense01_Param_data (Sense00_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subst0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                       (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal ))

(Sense1_Param_reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__ (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal))
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__ (Sense1_Param_ee_ G paramlocal))
      (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal)
                          ~> PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))

(Sense00_Form_K : obGenerator -> Type)
(Sense01_Form_K : Sense01_data Sense00_Form_K)
(Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)

(Sense1_Form_ee__ :
   forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
     Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K
                       (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                       (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
(Sense1_Form_ee_morphism : Morphism_Form_prop Sense1_Form_ee__)
(Form_ee__ : pseudoCode_Family Sense1_Form_ee_morphism)

(Sense00_Form_E : obGenerator -> Type)
(Sense01_Form_E : Sense01_data Sense00_Form_E)
(Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)

(Sense1_Form_ee'__ : Sense1_Form_data Sense1_FormParam_K Sense1_FormParam_E Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__)
(Form_ee'__ : pseudoCode Sense1_Form_ee'__ )

(Sense00_Param_SubstF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), obGenerator -> Type)
(Sense01_Param_SubstF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), Sense01_Param_data (Sense00_Param_SubstF0__ G param cons_paramlocal form cons_form))
(Sense1_Param_subst0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubstF0__ G param cons_paramlocal form cons_form) (Sense01_Param_View (Parameter0 G)))
(Sense1_Param_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubstF0__ G param cons_paramlocal form cons_form) Sense01_Param_E)
(PParam_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    pseudoCode_PParam (Sense1_Param_subst0__ G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form) )
(Sense1_Form_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_E
                      (Sense1_Param_subst0__  G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form))
(Form_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
pseudoCode (Sense1_Form_ee0__ G param cons_paramlocal form cons_form))
(ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod( View G ~> E @_ (PParam_ee0__ G param cons_paramlocal form cons_form) @^ (Form_ee0__ G param cons_paramlocal form cons_form))),

forall (Sense1_Param_reparam_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
      reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__
                                                               (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                                                               (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__
                                                                (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Param_subst0__ G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form))
(reparam_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal) ~> PParam_ee0__ G param cons_paramlocal form cons_form @_ (Sense1_Param_reparam_ee__ G param cons_paramlocal form cons_form)))
(Congr_congr_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Congr_data (Sense1_Form_Compos (Sense1_Form_ee'__) (Sense1_Form_ee__ G param form)) (Sense1_Form_ee0__ G param cons_paramlocal form cons_form) (Sense1_Param_reparam_ee__ G param cons_paramlocal form cons_form))
(congr_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod$( Compos_pseudoCode PParam_ee'__ Form_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal) (AtMember_Form Form_ee__ cons_paramlocal cons_form) ~> (Form_ee0__ G param cons_paramlocal form cons_form) @_ Congr_congr_ee__ G param cons_paramlocal form cons_form ) ),

 forall Sense00_Form_D Sense01_Form_D Sense00_Param_D Sense01_Param_D Sense1_FormParam_D
   (D : @obCoMod Sense00_Form_D Sense01_Form_D Sense00_Param_D Sense01_Param_D Sense1_FormParam_D)
   (Param_D : @obCoMod_Param Sense00_Param_D Sense01_Param_D),
 forall Sense00_Param_ED (Sense01_Param_ED : Sense01_Param_data Sense00_Param_ED)
   (Sense1_Param_proj_dd : Sense1_Param_data Sense01_Param_ED Sense01_Param_E)
   (Sense1_Param_subst_dd : Sense1_Param_data Sense01_Param_ED Sense01_Param_D)
   (PParam_ED : pseudoCode_PParam Sense1_Param_proj_dd Sense1_Param_subst_dd)
   (Sense1_Form_dd : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_D Sense1_Param_proj_dd Sense1_Param_subst_dd)
   (Form_dd : pseudoCode Sense1_Form_dd )
   (dd : 'CoMod( E ~> D @_ PParam_ED @^ Form_dd )),

 forall Sense00_Param_ED' (Sense01_Param_ED' : Sense01_Param_data Sense00_Param_ED')
   (Sense1_Param_proj_dd' : Sense1_Param_data Sense01_Param_ED' Sense01_Param_E)
   (Sense1_Param_subst_dd' : Sense1_Param_data Sense01_Param_ED' Sense01_Param_D)
   (PParam_ED' : pseudoCode_PParam Sense1_Param_proj_dd' Sense1_Param_subst_dd')
   (param_dd : 'CoMod__( Param_E ~> Param_D @_ PParam_ED' )),

forall Sense1_Param_reparam_ED
  (reparam_ED : 'CoMod_$( PParam_ED  ~> PParam_ED' @_ Sense1_Param_reparam_ED) ),

  ( Destructing_default  (fun G paramlocal  P inFibre_P cons_inFibre_P  cons_paramlocal => (param_ee_ G paramlocal  P inFibre_P cons_inFibre_P  cons_paramlocal) o>CoMod__ param_dd)
                       (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal => (Assoc_reparam PParam_ED PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal))
                                                              o>_$ (Compos_pseudoCode_PParam_cong reparam_ED (reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))
                       (fun G param cons_paramlocal form cons_form => (ee__ G param cons_paramlocal form cons_form) o>CoMod dd)
                       (fun G param cons_paramlocal form cons_form => (Assoc_reparam PParam_ED PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal) )
                                            o>_$ (Compos_pseudoCode_PParam_cong (Refl_reparam PParam_ED) (reparam_ee__ G param cons_paramlocal form cons_form)))
                       (fun G param cons_paramlocal form cons_form => (Assoc_congrPseudoCode Form_dd PParam_ED Form_ee'__ PParam_ee'__ (AtMember_Form Form_ee__ cons_paramlocal cons_form) (AtMember_PParam PParam_ee_ cons_paramlocal))
                                            o>$ Compos_cong_congrPseudoCode (Refl_reparam PParam_ED) (Refl_congrPseudoCode Form_dd) (reparam_ee__ G param cons_paramlocal form cons_form) (congr_ee__ G param cons_paramlocal form cons_form)) )

    [ (Rev_reparam (Assoc_reparam _ _ _))
        o>_$ (Compos_pseudoCode_PParam_cong (ViewedFunctor1_PParam_default_morphism_reparam PParam_ED PParam_ee'__) (Refl_reparam _))
      @^ (Rev_congrPseudoCode (Assoc_congrPseudoCode _ _ _ _ _ _))
      o>$ (Compos_cong_congrPseudoCode (ViewedFunctor1_PParam_default_morphism_reparam PParam_ED PParam_ee'__)
                                          (ViewedFunctor1_default_morphism_congrPseudoCode PParam_ED Form_dd PParam_ee'__ Form_ee'__)
                                          (Refl_reparam _) (Refl_congrPseudoCode _))  ]<~~

    ( ( Destructing_default param_ee_ reparam_ee_  ee__ reparam_ee__ congr_ee__ )
     o>CoMod ( ViewedFunctor1_default dd param_dd reparam_ED ) )

| Constructing_default_comp_Destructing_default' :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

  forall (Sense00_Param_K : obGenerator -> Type)
(Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
(Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
    Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
(Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
(PParam_ee_ : pseudoCode_PParam_Family Sense1_Param_ee_morphism)

(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)

(Sense00_Param_KE__ : obGenerator -> Type)
(Sense01_Param_KE__ : Sense01_Param_data Sense00_Param_KE__)
(Sense1_Param_proj_ee'__ : Sense1_Param_data Sense01_Param_KE__ Sense01_Param_K)
(Sense1_Param_subst_ee'__ : Sense1_Param_data Sense01_Param_KE__ Sense01_Param_E)
(PParam_ee'__ : pseudoCode_PParam Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__)

(Sense00_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    obGenerator -> Type)
(Sense01_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense01_Param_data (Sense00_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subst0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                       (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal ))

(Sense1_Param_reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__ (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal))
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__ (Sense1_Param_ee_ G paramlocal))
      (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal)
                          ~> PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))

(Sense00_Form_K : obGenerator -> Type)
(Sense01_Form_K : Sense01_data Sense00_Form_K)
(Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)

(Sense1_Form_ee__ :
   forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
     Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K
                       (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                       (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
(Sense1_Form_ee_morphism : Morphism_Form_prop Sense1_Form_ee__)
(Form_ee__ : pseudoCode_Family Sense1_Form_ee_morphism)

(Sense00_Form_E : obGenerator -> Type)
(Sense01_Form_E : Sense01_data Sense00_Form_E)
(Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)

(Sense1_Form_ee'__ : Sense1_Form_data Sense1_FormParam_K Sense1_FormParam_E Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__)
(Form_ee'__ : pseudoCode Sense1_Form_ee'__ )

(Sense00_Param_SubstF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), obGenerator -> Type)
(Sense01_Param_SubstF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), Sense01_Param_data (Sense00_Param_SubstF0__ G param cons_paramlocal form cons_form))
(Sense1_Param_subst0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubstF0__ G param cons_paramlocal form cons_form) (Sense01_Param_View (Parameter0 G)))
(Sense1_Param_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubstF0__ G param cons_paramlocal form cons_form) Sense01_Param_E)
(PParam_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    pseudoCode_PParam (Sense1_Param_subst0__ G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form) )
(Sense1_Form_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_E
                      (Sense1_Param_subst0__  G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form))
(Form_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
pseudoCode (Sense1_Form_ee0__ G param cons_paramlocal form cons_form))
(ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod( View G ~> E @_ (PParam_ee0__ G param cons_paramlocal form cons_form) @^ (Form_ee0__ G param cons_paramlocal form cons_form))),

forall (Sense1_Param_reparam_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
      reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__
                                                               (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                                                               (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__
                                                                (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Param_subst0__ G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form))
(reparam_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal) ~> PParam_ee0__ G param cons_paramlocal form cons_form @_ (Sense1_Param_reparam_ee__ G param cons_paramlocal form cons_form)))
(Congr_congr_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Congr_data (Sense1_Form_Compos (Sense1_Form_ee'__) (Sense1_Form_ee__ G param form)) (Sense1_Form_ee0__ G param cons_paramlocal form cons_form) (Sense1_Param_reparam_ee__ G param cons_paramlocal form cons_form))
(congr_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod$( Compos_pseudoCode PParam_ee'__ Form_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal) (AtMember_Form Form_ee__ cons_paramlocal cons_form) ~> (Form_ee0__ G param cons_paramlocal form cons_form) @_ Congr_congr_ee__ G param cons_paramlocal form cons_form ) ),

forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form),

  (UnitViewedFunctor_default Param_E ( ee__ G param cons_paramlocal form cons_form ))
    [ (Assoc_reparam _ _ _)
        o>_$ (Compos_pseudoCode_PParam_cong (Refl_reparam _)
                                                ((Constructing_PParam_default_comp_Destructing_PParam_default_reparam PParam_ee_ cons_paramlocal)
                                                   o>_$ (Compos_pseudoCode_PParam_cong (Refl_reparam _) (Refl_reparam _))))
           o>_$ (Rev_reparam (Assoc_reparam _ _ _))
              o>_$ (Compos_pseudoCode_PParam_cong (UnitViewedFunctor_PParam_default_morphismPost_reparam' _)
                                                      (Refl_reparam _))
                 o>_$ (Assoc_reparam _ _ _)
                    o>_$ (Compos_pseudoCode_PParam_cong (Refl_reparam _)
                                                (reparam_ee__ G param cons_paramlocal form cons_form))
    @^ (Assoc_congrPseudoCode _ _ _ _ _ _)
        o>$ (Compos_cong_congrPseudoCode (Refl_reparam _) (Refl_congrPseudoCode _)
                                                ((Constructing_PParam_default_comp_Destructing_PParam_default_reparam PParam_ee_ cons_paramlocal)
                                                   o>_$ (Compos_pseudoCode_PParam_cong (Refl_reparam _) (Refl_reparam _)))
                                                (Constructing_default_comp_Destructing_default_congrPseudoCode' PParam_ee_ Form_ee__ cons_paramlocal cons_form))
           o>$ (Rev_congrPseudoCode (Assoc_congrPseudoCode _ _ _ _ _ _))
              o>$ (Compos_cong_congrPseudoCode (UnitViewedFunctor_PParam_default_morphismPost_reparam' _) (UnitViewedFunctor_default_morphismPost_congrPseudoCode' _ _ )
                                                      (Refl_reparam _) (Refl_congrPseudoCode _))
                 o>$ (Assoc_congrPseudoCode _ _ _ _ _ _)
                    o>$ (Compos_cong_congrPseudoCode (Refl_reparam _) (Refl_congrPseudoCode _)
                                                (reparam_ee__ G param cons_paramlocal form cons_form) (congr_ee__ G param cons_paramlocal form cons_form) ) ]<~~

    ( ( Constructing_default cons_paramlocal cons_form )
        o>CoMod ( Destructing_default param_ee_ reparam_ee_ ee__ reparam_ee__ congr_ee__ ) )

| Forget_morphism :
 forall (Sense00_Form_F : obGenerator -> Type)
   (Sense01_Form_F : Sense01_data Sense00_Form_F)
   (Sense00_Param_F : obGenerator -> Type)
   (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
   (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
   (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

 forall (Sense00_Param_PiSubstF : obGenerator -> Type)
   (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
   (Param_PiSubstF : @obCoMod_Param Sense00_Param_PiSubstF Sense01_Param_PiSubstF),

 forall (Sense00_Param_SubstF : obGenerator -> Type)
   (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
   (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
   (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF)
   (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst),

 forall (Sense00_Param_SubstF' : obGenerator -> Type)
   (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
   (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF)
   (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
   (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
   (param_forget' : 'CoMod__( Param_PiSubstF ~> Param_F @_ PParam_SubstF' )),

 forall (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst
                                               Sense1_Param_proj' Sense1_Param_subst')
   (reparam_forget' : 'CoMod_$( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )),

 forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
   (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)
   (Sense00_Param_FE : obGenerator -> Type)
   (Sense01_Param_FE : Sense01_Param_data Sense00_Param_FE)
   (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_F)
   Sense1_Param_subst_ee (PParam_FE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee) Sense1_Form_ee
   (Form_ee : pseudoCode Sense1_Form_ee)
   (ee : 'CoMod( F ~> E @_  PParam_FE @^ Form_ee )),

 forall Sense00_Form_D Sense01_Form_D Sense00_Param_D Sense01_Param_D Sense1_FormParam_D
   (D : @obCoMod Sense00_Form_D Sense01_Form_D Sense00_Param_D Sense01_Param_D Sense1_FormParam_D)
   (Sense00_Param_ED : obGenerator -> Type)
   (Sense01_Param_ED : Sense01_Param_data Sense00_Param_ED)
   (Sense1_Param_proj_dd : Sense1_Param_data Sense01_Param_ED Sense01_Param_E)
   (Sense1_Param_subst_dd : Sense1_Param_data Sense01_Param_ED Sense01_Param_D)
   (PParam_ED : pseudoCode_PParam Sense1_Param_proj_dd Sense1_Param_subst_dd) Sense1_Form_dd
   (Form_dd : pseudoCode Sense1_Form_dd)
   (dd : 'CoMod( E ~> D @_ PParam_ED @^ Form_dd )),

   ( Forget param_forget' reparam_forget' ( ee o>CoMod dd ) ) [
       (Rev_reparam (Assoc_reparam _ _ _))
         @^ (Rev_congrPseudoCode (Assoc_congrPseudoCode _ _ _ _ _ _))
     ]<~~ ( (Forget param_forget' reparam_forget' ee) o>CoMod dd )

| Remember_morphism :
 forall (Sense00_Form_F : obGenerator -> Type)
   (Sense01_Form_F : Sense01_data Sense00_Form_F)
   (Sense00_Param_F : obGenerator -> Type)
   (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
   (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
   (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

 forall (Sense00_Param_PiSubstF : obGenerator -> Type)
   (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
   (Param_PiSubstF : @obCoMod_Param Sense00_Param_PiSubstF Sense01_Param_PiSubstF),

 forall (Sense00_Param_SubstF : obGenerator -> Type)
   (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
   (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
   (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF)
   (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst),

 forall (Sense00_Param_SubstF' : obGenerator -> Type)
   (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
   (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF)
   (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
   (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
   (param_forget' : 'CoMod__( Param_PiSubstF ~> Param_F @_ PParam_SubstF' ) ),

 forall (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst
                                               Sense1_Param_proj' Sense1_Param_subst')
   (reparam_forget' : 'CoMod_$( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )),

 forall (Sense00_Form_L : obGenerator -> Type)
   (Sense01_Form_L : Sense01_data Sense00_Form_L)
   (Sense00_Param_L : obGenerator -> Type)
   (Sense01_Param_L : Sense01_Param_data Sense00_Param_L)
   (Sense1_FormParam_L : Sense1_FormParam_data Sense01_Form_L Sense01_Param_L)
   (L : @obCoMod Sense00_Form_L Sense01_Form_L Sense00_Param_L Sense01_Param_L Sense1_FormParam_L)
   (Sense00_Param_LF : obGenerator -> Type)
   (Sense01_Param_LF : Sense01_Param_data Sense00_Param_LF)
   (Sense1_Param_subst_ll : Sense1_Param_data Sense01_Param_LF Sense01_Param_F)
   (Sense1_Param_proj_ll : Sense1_Param_data Sense01_Param_LF Sense01_Param_L)
   (PParam_LF : pseudoCode_PParam Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (Sense1_Form_ll : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_F Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (Form_ll : pseudoCode Sense1_Form_ll)
   (ll : 'CoMod( L ~> F @_ PParam_LF @^ Form_ll )),

 forall (Sense00_Param_LPiSubstF : obGenerator -> Type)
   (Sense01_Param_LPiSubstF : Sense01_Param_data Sense00_Param_LPiSubstF)
   (Sense1_Param_LPiSubstF_subst : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_PiSubstF)
   (Sense1_Param_LPiSubstF_proj : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_L)
   (PParam_LPiSubstF : pseudoCode_PParam Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst),
 forall (Sense00_Form_LF : obGenerator -> Type)
   (Sense01_Form_LF : Sense01_data Sense00_Form_LF)
   (Sense1_FormParam_LF : Sense1_FormParam_data Sense01_Form_LF Sense01_Param_PiSubstF)
   (Sense1_Form_ll' : Sense1_Form_data Sense1_FormParam_LF Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
   (Form_ll' : pseudoCode Sense1_Form_ll')
   (Sense1_Form_ll_ : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_LF Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst)
   (Form_ll_ : pseudoCode Sense1_Form_ll_),

 forall (Sense1_Param_reparam_remember : reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst)
                                             (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj Sense1_Param_subst Sense1_Param_LPiSubstF_subst) Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (reparam_remember : 'CoMod_$( (Compos_pseudoCode_PParam PParam_SubstF PParam_LPiSubstF)
                                   ~> PParam_LF @_ Sense1_Param_reparam_remember ) ),
 forall (Congr_congr_ll : Congr_data (Sense1_Form_Compos Sense1_Form_ll' Sense1_Form_ll_) Sense1_Form_ll Sense1_Param_reparam_remember)
   (congr_ll : 'CoMod$( (Compos_pseudoCode PParam_SubstF Form_ll' PParam_LPiSubstF Form_ll_) ~> Form_ll @_ Congr_congr_ll ) ),

 forall (Sense00_Form_E : obGenerator -> Type)
   (Sense01_Form_E : Sense01_data Sense00_Form_E)
   (Sense00_Param_E : obGenerator -> Type)
   (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
   (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
   (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)
   (Sense00_Param_EL : obGenerator -> Type)
   (Sense01_Param_EL : Sense01_Param_data Sense00_Param_EL)
   (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_EL Sense01_Param_L)
   (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_EL Sense01_Param_E)
   (PParam_EL : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee)
   (Sense1_Form_ee : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_L Sense1_Param_proj_ee Sense1_Param_subst_ee)
   (Form_ee : pseudoCode Sense1_Form_ee)
   (ee : 'CoMod( E ~> L @_ PParam_EL @^ Form_ee )),

   (** /!\ HAHA TACKLE /!\ [Form_ll] shall factorize through [Forget_pseudoCode PParam_SubstF] , similar as when [PParam_LF] factorizes through [PParam_SubstF]
      DONE! /!\ YES /!\  *)
     ( Remember param_forget' reparam_forget' ( ee o>CoMod ll )
                ( (Rev_reparam (Assoc_reparam _ _ _)) o>_$ (Compos_pseudoCode_PParam_cong reparam_remember (Refl_reparam PParam_EL)) )
                ( (Rev_congrPseudoCode (Assoc_congrPseudoCode _ _ _ _ _ _)) o>$ (Compos_cong_congrPseudoCode reparam_remember congr_ll (Refl_reparam PParam_EL) (Refl_congrPseudoCode Form_ee) ) ) )
     [ (Assoc_reparam _ _ _)  @^ (Assoc_congrPseudoCode _ _ _ _ _ _) ]<~~
     ( ee o>CoMod ( Remember param_forget' reparam_forget' ll reparam_remember congr_ll ) )

| Remember_comp_Forget :
 forall (Sense00_Form_F : obGenerator -> Type)
   (Sense01_Form_F : Sense01_data Sense00_Form_F)
   (Sense00_Param_F : obGenerator -> Type)
   (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
   (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
   (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

 forall (Sense00_Param_PiSubstF : obGenerator -> Type)
   (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
   (Param_PiSubstF : @obCoMod_Param Sense00_Param_PiSubstF Sense01_Param_PiSubstF),

 forall (Sense00_Param_SubstF : obGenerator -> Type)
   (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
   (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
   (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF)
   (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst),

 forall (Sense00_Param_SubstF' : obGenerator -> Type)
   (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
   (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF)
   (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
   (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
   (param_forget' : 'CoMod__( Param_PiSubstF ~> Param_F @_ PParam_SubstF' ) ),

 forall (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst
                                               Sense1_Param_proj' Sense1_Param_subst')
   (reparam_forget' : 'CoMod_$( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )),

 forall (Sense00_Form_L : obGenerator -> Type)
   (Sense01_Form_L : Sense01_data Sense00_Form_L)
   (Sense00_Param_L : obGenerator -> Type)
   (Sense01_Param_L : Sense01_Param_data Sense00_Param_L)
   (Sense1_FormParam_L : Sense1_FormParam_data Sense01_Form_L Sense01_Param_L)
   (L : @obCoMod Sense00_Form_L Sense01_Form_L Sense00_Param_L Sense01_Param_L Sense1_FormParam_L)
   (Sense00_Param_LF : obGenerator -> Type)
   (Sense01_Param_LF : Sense01_Param_data Sense00_Param_LF)
   (Sense1_Param_subst_ll : Sense1_Param_data Sense01_Param_LF Sense01_Param_F)
   (Sense1_Param_proj_ll : Sense1_Param_data Sense01_Param_LF Sense01_Param_L)
   (PParam_LF : pseudoCode_PParam Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (Sense1_Form_ll : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_F Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (Form_ll : pseudoCode Sense1_Form_ll)
   (ll : 'CoMod( L ~> F @_ PParam_LF @^ Form_ll )),

 forall (Sense00_Param_LPiSubstF : obGenerator -> Type)
   (Sense01_Param_LPiSubstF : Sense01_Param_data Sense00_Param_LPiSubstF)
   (Sense1_Param_LPiSubstF_subst : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_PiSubstF)
   (Sense1_Param_LPiSubstF_proj : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_L)
   (PParam_LPiSubstF : pseudoCode_PParam Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst),
 forall (Sense00_Form_LF : obGenerator -> Type)
   (Sense01_Form_LF : Sense01_data Sense00_Form_LF)
   (Sense1_FormParam_LF : Sense1_FormParam_data Sense01_Form_LF Sense01_Param_PiSubstF)
   (Sense1_Form_ll' : Sense1_Form_data Sense1_FormParam_LF Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
   (Form_ll' : pseudoCode Sense1_Form_ll')
   (Sense1_Form_ll_ : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_LF Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst)
   (Form_ll_ : pseudoCode Sense1_Form_ll_),

 forall (Sense1_Param_reparam_remember : reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst)
                                             (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj Sense1_Param_subst Sense1_Param_LPiSubstF_subst) Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (reparam_remember : 'CoMod_$( (Compos_pseudoCode_PParam PParam_SubstF PParam_LPiSubstF)
                                   ~> PParam_LF @_ Sense1_Param_reparam_remember ) ),
 forall (Congr_congr_ll : Congr_data (Sense1_Form_Compos Sense1_Form_ll' Sense1_Form_ll_) Sense1_Form_ll Sense1_Param_reparam_remember)
   (congr_ll : 'CoMod$( (Compos_pseudoCode PParam_SubstF Form_ll' PParam_LPiSubstF Form_ll_) ~> Form_ll @_ Congr_congr_ll ) ),

 forall (Sense00_Param_SubstF'' : obGenerator -> Type)
   (Sense01_Param_SubstF'' : Sense01_Param_data Sense00_Param_SubstF'')
   (Sense1_Param_proj'' : Sense1_Param_data Sense01_Param_SubstF'' Sense01_Param_PiSubstF)
   (Sense1_Param_subst'' : Sense1_Param_data Sense01_Param_SubstF'' Sense01_Param_F)
   (PParam_SubstF'' : pseudoCode_PParam Sense1_Param_proj'' Sense1_Param_subst'')
   (param_forget'' : 'CoMod__( Param_PiSubstF ~> Param_F @_ PParam_SubstF'' )),

 forall (Sense1_Param_reparam_forget'' : reparamCongr Sense1_Param_proj Sense1_Param_subst
                                               Sense1_Param_proj'' Sense1_Param_subst'')
   (reparam_forget'' : 'CoMod_$( PParam_SubstF ~> PParam_SubstF'' @_ Sense1_Param_reparam_forget'' )),

 forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
   (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)
   (Sense00_Param_FE : obGenerator -> Type)
   (Sense01_Param_FE : Sense01_Param_data Sense00_Param_FE)
   (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_F)
   Sense1_Param_subst_ee (PParam_FE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee) Sense1_Form_ee
   (Form_ee : pseudoCode Sense1_Form_ee)
   (ee : 'CoMod( F ~> E @_  PParam_FE @^ Form_ee )),

   ( ll o>CoMod ee ) [
       (Assoc_reparam _ _ _)
         o>_$ ( Compos_pseudoCode_PParam_cong (Refl_reparam PParam_FE)
                ( (Rev_reparam (Assoc_reparam _ _ _)) o>_$
                     ( ( Compos_pseudoCode_PParam_cong (Unit_comp_morCoMod_reparam _)
                                                         (Refl_reparam PParam_LPiSubstF) ) o>_$ reparam_remember ) ) )
    @^ (Assoc_congrPseudoCode _ _ _ _ _ _)
         o>$ ( Compos_cong_congrPseudoCode (Refl_reparam PParam_FE) (Refl_congrPseudoCode Form_ee)
                ( (Rev_reparam (Assoc_reparam _ _ _)) o>_$
                      ( ( Compos_pseudoCode_PParam_cong (Unit_comp_morCoMod_reparam _)
                                                            (Refl_reparam PParam_LPiSubstF) ) o>_$ reparam_remember ) )
                ( (Rev_congrPseudoCode (Assoc_congrPseudoCode _ _ _ _ _ _)) o>$
                      ( ( Compos_cong_congrPseudoCode (Unit_comp_morCoMod_reparam _) (Remember_comp_Forget_congrPseudoCode PParam_SubstF Form_ll')
                                                         (Refl_reparam PParam_LPiSubstF) (Refl_congrPseudoCode Form_ll_) ) o>$ congr_ll ) ) )
     ]<~~ ( (Remember param_forget' reparam_forget' ll reparam_remember congr_ll) o>CoMod (Forget param_forget'' reparam_forget'' ee) )

where "ff0 [  reparam_rr @^ congr_ff  ]<~~ ff" := (@convCoMod _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff _ _ _ _ _ _ _ ff0 _ reparam_rr _ congr_ff)
with convCoMod_PParam : forall Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
 forall Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
 forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
 forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
 forall (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF )),
 forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0),
 forall Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E,
 forall Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F,
 forall (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0),
 forall (param_ff0 : 'CoMod__( Param_E ~> Param_F @_  PParam_EF0 )),
 forall Sense1_Param_reparam_EF (reparam_EF : 'CoMod_$( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_EF)), Prop :=

| convCoMod_PParam_Refl : forall Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
 forall Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
 forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
 forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
 forall (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF )),
   param_ff [ Refl_reparam PParam_EF ]<~~__ param_ff

| convCoMod_PParam_Trans :  forall Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
 forall Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
 forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
 forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
 forall (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF )),
 forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0),
 forall Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E,
 forall Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F,
 forall (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0),
 forall (param_ff0 : 'CoMod__( Param_E ~> Param_F @_  PParam_EF0 )),
 forall Sense1_Param_reparam_EF (reparam_EF : 'CoMod_$( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_EF)),
param_ff0 [ reparam_EF ]<~~__ param_ff ->

 forall Sense00_Param_EF0' (Sense01_Param_EF0' : Sense01_Param_data Sense00_Param_EF0'),
 forall Sense1_Param_proj_ff0' : Sense1_Param_data Sense01_Param_EF0' Sense01_Param_E,
 forall Sense1_Param_subst_ff0' : Sense1_Param_data Sense01_Param_EF0' Sense01_Param_F,
 forall (PParam_EF0' : pseudoCode_PParam Sense1_Param_proj_ff0' Sense1_Param_subst_ff0'),
 forall (param_ff0' : 'CoMod__( Param_E ~> Param_F @_  PParam_EF0' )),
 forall Sense1_Param_reparam_EF' (reparam_EF' : 'CoMod_$( PParam_EF0 ~> PParam_EF0' @_ Sense1_Param_reparam_EF')),
param_ff0' [ reparam_EF' ]<~~__ param_ff0 ->
param_ff0' [ reparam_EF o>_$ reparam_EF' ]<~~__ param_ff

| Compos_PParam_cong :
forall (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Param_F : obCoMod_Param Sense01_Param_F)
  (Sense00_Param_F' : obGenerator -> Type) (Sense01_Param_F' : Sense01_Param_data Sense00_Param_F')
  (Param_F' : obCoMod_Param Sense01_Param_F') (Sense00_Param_F'F : obGenerator -> Type)
  (Sense01_Param_F'F : Sense01_Param_data Sense00_Param_F'F) (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F')
  (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_F'F Sense01_Param_F) (PParam_F'F : pseudoCode_PParam Sense1_Param_proj_ff' Sense1_Param_subst_ff')
  (param_ff' : 'CoMod__( Param_F' ~> Param_F @_ PParam_F'F  )),

forall (Sense00_Param_F'' : obGenerator -> Type)
  (Sense01_Param_F'' : Sense01_Param_data Sense00_Param_F'')
  (Param_F'' : obCoMod_Param Sense01_Param_F'')
  (Sense00_Param_F''F' : obGenerator -> Type) (Sense01_Param_F''F' : Sense01_Param_data Sense00_Param_F''F') (Sense1_Param_proj_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F'')
  (Sense1_Param_subst_ff_ : Sense1_Param_data Sense01_Param_F''F' Sense01_Param_F')
  (PParam_F''F' : pseudoCode_PParam Sense1_Param_proj_ff_ Sense1_Param_subst_ff_)
  (param_ff_ : 'CoMod__( Param_F'' ~> Param_F' @_ PParam_F''F')),

forall Sense00_Param_E'E (Sense01_Param_E'E : Sense01_Param_data Sense00_Param_E'E)
  (Sense1_Param_proj_ee' : Sense1_Param_data Sense01_Param_E'E Sense01_Param_F')
  Sense1_Param_subst_ee' (PParam_E'E : pseudoCode_PParam Sense1_Param_proj_ee' Sense1_Param_subst_ee')
  (param_ee' : 'CoMod__( Param_F' ~> Param_F @_ PParam_E'E  )),
forall Sense1_Param_reparam_F'F
  (reparam_F'F : 'CoMod_$(  PParam_F'F  ~>  PParam_E'E  @_ Sense1_Param_reparam_F'F )),
  param_ee' [ reparam_F'F ]<~~__ param_ff' ->

  forall Sense00_Param_E''E' (Sense01_Param_E''E' : Sense01_Param_data Sense00_Param_E''E')
    (Sense1_Param_proj_ee_ : Sense1_Param_data Sense01_Param_E''E' Sense01_Param_F'')
    Sense1_Param_subst_ee_ (PParam_E''E' : pseudoCode_PParam Sense1_Param_proj_ee_ Sense1_Param_subst_ee_)
    (param_ee_ : 'CoMod__( Param_F'' ~> Param_F' @_ PParam_E''E')),
  forall Sense1_Param_reparam_F''F'
  (reparam_F''F' : 'CoMod_$(  PParam_F''F'  ~>  PParam_E''E'  @_ Sense1_Param_reparam_F''F' )),
    param_ee_ [ reparam_F''F' ]<~~__ param_ff_ ->

     ( param_ee_ o>CoMod__ param_ee' )
       [ Compos_pseudoCode_PParam_cong reparam_F'F reparam_F''F' ]<~~__
       ( param_ff_ o>CoMod__ param_ff' )

(**TODO: MEMO:
| ViewMor_PParam_cong : (**MEMO: this solution conversion is not used during cut-elimination resolution *)
 forall (Q : obParametrizator) (G : obGenerator) (p : 'Parametrizator(  Parameter0 G ~> Q (** | Q_Viewing ... only the viewing elements*) )) (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (pp : viewingDefault_Constructel_Param p cons_inFibre_P),
 forall (G' : obGenerator) (p' : 'Parametrizator(  Parameter0 G' ~> Q )) (inFibre_P' : inFibre G' P)
   (cons_inFibre_P' : inFibreDefault_Constructel_Param inFibre_P')
   (p'p' : viewingDefault_Constructel_Param p' cons_inFibre_P'),
    forall (g : reparamCongrGenerator G' G),
      forall (Heqparam : p' = (Parameter1 (fst (sval g))) o>Parametrizator p),
      forall (Heqis : fst (sval inFibre_P') =  fst (sval (inFibre_transformation  g inFibre_P)) ),
        (**TODO: for now this uses senses, but shall be fully grammatical (using the common sameness at some viewing-intersection) of pp and p'p' *)
        ( ViewMor_PParam p'p' )
          [ ViewMor_PParam_cong_reparam pp p'p' Heqparam Heqis ]<~~__
          ( ViewMor_PParam pp )
*)

(**TODO: MEMO:
| Constructing_PParam_default_cong : (**MEMO: this solution conversion is not used during cut-elimination resolution *)
    (**MEMO: the action polymorphism is similar as congruence with some non-iso [g : G ~> G] variation ... *)
forall (Sense00_Param_SubstF : obGenerator -> Type)
  (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
  (Sense00_Param_SumSubstF : obGenerator -> Type)
  (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
  (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
  (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),
forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
  (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
  (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
forall (paramlocal' : Sense00_Param_SumSubstF G) (inFibre_P' : inFibre G P)
  (cons_inFibre_P' : inFibreDefault_Constructel_Param inFibre_P')
  (cons_paramlocal' : constructel_Param Param_SubstF paramlocal' cons_inFibre_P' ),
forall (Heqparamlocal : paramlocal' = paramlocal)
  (Heqis : fst (sval inFibre_P') = fst (sval inFibre_P)),
  (**TODO: for now this uses senses, but shall be fully grammatical (using the common sameness at some viewing-intersection) of cons_paramlocal and cons_paramlocal' *)
  ( Constructing_PParam_default cons_paramlocal' )
    [ Constructing_PParam_default_cong_reparam  cons_paramlocal cons_paramlocal' Heqparamlocal Heqis ]<~~__
    ( Constructing_PParam_default cons_paramlocal )
*)

| ViewedFunctor1_PParam_default_cong : forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
    forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
  (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
  (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
  (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
  (param_ff : 'CoMod__( Param_E ~> Param_F  @_ PParam_EF )),

forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0)
  (Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
  (Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F)
  (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
  (param_ff0 : 'CoMod__( Param_E ~> Param_F  @_ PParam_EF0 )),
forall (Sense1_Param_reparam_conv_param_ff : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
  (reparam_conv_param_ff : 'CoMod_$ ( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_conv_param_ff)),

  (  param_ff0 )
    [ reparam_conv_param_ff ]<~~__
      (  param_ff ) ->

  ( ViewedFunctor1_PParam_default  param_ff0 )
    [  ViewedFunctor1_PParam_default_cong_reparam reparam_conv_param_ff ]<~~__
    ( ViewedFunctor1_PParam_default param_ff )

| UnitViewedFunctor_PParam_default_cong' :
forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
  (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
  (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
  (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
  (param_ff : 'CoMod__( Param_E ~> Param_F  @_ PParam_EF )),

forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0)
  (Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
  (Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F)
  (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
  (param_ff0 : 'CoMod__( Param_E ~> Param_F  @_ PParam_EF0 )),

forall (Sense1_Param_reparam_conv_param_ff : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
  (reparam_conv_param_ff : 'CoMod_$ ( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_conv_param_ff)),

  (  param_ff0 )
    [ reparam_conv_param_ff ]<~~__
      (  param_ff ) ->

  ( UnitViewedFunctor_PParam_default param_ff0 )
    [  Compos_pseudoCode_PParam_cong (Refl_reparam _) reparam_conv_param_ff ]<~~__
    ( UnitViewedFunctor_PParam_default param_ff )

| Destructing_PParam_default_cong :
 forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),

forall (Sense00_Param_K : obGenerator -> Type)
  (Sense01_Param_K : Sense01_Param_data Sense00_Param_K),

forall (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
      Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
  (Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
  (PParam_ee_ :  pseudoCode_PParam_Family Sense1_Param_ee_morphism),

forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),

forall (Sense00_Param_ee'__ : obGenerator -> Type) (Sense01_Param_ee'__ : Sense01_Param_data Sense00_Param_ee'__)
  (Sense1_Param_proj_ee'__ : Sense1_Param_data Sense01_Param_ee'__ Sense01_Param_K) (Sense1_Param_subst_ee'__ : Sense1_Param_data Sense01_Param_ee'__ Sense01_Param_E)
  (PParam_ee'__ : pseudoCode_PParam Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__),

forall (Sense00_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), obGenerator -> Type)
(Sense01_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), Sense01_Param_data (Sense00_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subst0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                    (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal )),

forall (Sense1_Param_reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__
                                                 (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal))
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__
                                                  (Sense1_Param_ee_ G paramlocal))
      (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal)
                          ~> PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))),

forall (Sense1_Param_dd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
    Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
  (Sense1_Param_dd_morphism : Morphism_prop Sense1_Param_dd_)
  (PParam_dd_ :  pseudoCode_PParam_Family Sense1_Param_dd_morphism)

(Sense00_Param_dd'__ : obGenerator -> Type) (Sense01_Param_dd'__ : Sense01_Param_data Sense00_Param_dd'__)
(Sense1_Param_proj_dd' : Sense1_Param_data Sense01_Param_dd'__ Sense01_Param_K) (Sense1_Param_subst_dd' : Sense1_Param_data Sense01_Param_dd'__ Sense01_Param_E)
(PParam_dd'__ : pseudoCode_PParam Sense1_Param_proj_dd' Sense1_Param_subst_dd')

(Sense00_Param_SubszF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), obGenerator -> Type)
(Sense01_Param_SubszF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), Sense01_Param_data (Sense00_Param_SubszF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subsz0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubszF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_dd0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubszF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_dd0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subsz0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                    (Sense1_Param_dd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(param_dd_ :  forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_dd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal ))

(Sense1_Param_reparam_dd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr _ _ _ _ )
(reparam_dd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_dd'__  (AtMember_PParam PParam_dd_ cons_paramlocal)
                          ~> PParam_dd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_dd_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))),

forall (Sense1_Param_reparam_eedd0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr _ _ _ _ )
  (reparam_eedd0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal
                          ~> PParam_dd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_eedd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))),

forall (conv_param_eedd0_ :  forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
      (param_dd_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
        [ (reparam_eedd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) ]<~~__
        (param_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)),

forall (Sense1_Param_reparam_eedd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G) (P : obParametrizator) (inFibre_P : inFibre G P),
    reparamCongr _ _ _ _ )
(reparam_eedd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( AtMember_PParam PParam_ee_ cons_paramlocal
                          ~> AtMember_PParam PParam_dd_ cons_paramlocal @_ (Sense1_Param_reparam_eedd_ G paramlocal P inFibre_P))),
forall (Sense1_Param_reparam_ee'dd'__ : reparamCongr _ _ _ _ )
  (reparam_ee'dd'__ : 'CoMod_$( PParam_ee'__ ~> PParam_dd'__ @_ Sense1_Param_reparam_ee'dd'__)),

forall (Coh_reparam_eedd_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
      (reparam_dd_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
        ~~_$ (*to be refl*) ((Rev_reparam (Compos_pseudoCode_PParam_cong reparam_ee'dd'__ (reparam_eedd_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal (*to be refl*))))
                               o>_$ ((reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) o>_$ (reparam_eedd0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))),

  ( Destructing_PParam_default param_dd_ reparam_dd_ )

    [ (Compos_pseudoCode_PParam_cong (ViewedFunctor1_PParam_default_cong_reparam reparam_ee'dd'__)
                                         (Destructing_pseudoCode_PParam_default_cong_reparam reparam_eedd_ ) ) ]<~~__

    ( Destructing_PParam_default param_ee_ reparam_ee_ )

| Formatting_cong :
forall (Sense00_Form_E : obGenerator -> Type)
(Sense01_Form_E : Sense01_data Sense00_Form_E)
(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)
(Sense00_Form_F : obGenerator -> Type)
(Sense01_Form_F : Sense01_data Sense00_Form_F)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
(F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)

(Sense00_Param_EF : obGenerator -> Type)
(Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
(Sense1_Param_proj : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
(PParam_EF : pseudoCode_PParam  Sense1_Param_proj Sense1_Param_subst)

(Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
(Form_ff : pseudoCode Sense1_Form_ff)
(ff : 'CoMod( E ~> F @_  PParam_EF @^ Form_ff ))

(Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)
(Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F)

(Sense00_Param_EF' : obGenerator -> Type)
(Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF')
(Sense1_Param_proj' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
(Sense1_Param_subst' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F)
(PParam_EF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
(param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF' ))

(Sense1_Param_reparam_EF : reparamCongr Sense1_Param_proj Sense1_Param_subst Sense1_Param_proj' Sense1_Param_subst')
(reparam_EF :  'CoMod_$( PParam_EF ~> PParam_EF' @_ Sense1_Param_reparam_EF ))

(Sense00_Param_D : obGenerator -> Type)
(Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
(Param_D : obCoMod_Param Sense01_Param_D)
(Sense00_Param_DE : obGenerator -> Type)
(Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
(Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D)
(Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
(PParam_DE : pseudoCode_PParam  Sense1_Param_proj_ee Sense1_Param_subst_ee)
(param_ee : 'CoMod__( Param_D ~> Param_E @_ PParam_DE )),

forall (Sense00_Param_EF0 : obGenerator -> Type)
(Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0)
(Sense1_Param_proj0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
(Sense1_Param_subst0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F)
(PParam_EF0 : pseudoCode_PParam Sense1_Param_proj0 Sense1_Param_subst0)

(Sense1_Form_ff0 : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj0 Sense1_Param_subst0)
(Form_ff0 : pseudoCode Sense1_Form_ff0)
(ff0 : 'CoMod( E ~> F @_  PParam_EF0 @^ Form_ff0 ))

(Sense1_Param_reparam_conv_ff : _ )
(reparam_conv_ff :  'CoMod_$( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_conv_ff ))
Congr_congr_conv_ff (congr_conv_ff : 'CoMod$( Form_ff ~> Form_ff0 @_ Congr_congr_conv_ff )),
  ff0 [reparam_conv_ff @^ congr_conv_ff]<~~ ff ->

forall (Sense00_Param_EF'0 : obGenerator -> Type)
(Sense01_Param_EF'0 : Sense01_Param_data Sense00_Param_EF'0)
(Sense1_Param_proj'0 : Sense1_Param_data Sense01_Param_EF'0 Sense01_Param_E)
(Sense1_Param_subst'0 : Sense1_Param_data Sense01_Param_EF'0 Sense01_Param_F)
(PParam_EF'0 : pseudoCode_PParam Sense1_Param_proj'0 Sense1_Param_subst'0)

(param_ff0 : 'CoMod__( Param_E ~> Param_F @_ PParam_EF'0 ))

(Sense1_Param_reparam_EF0 : reparamCongr Sense1_Param_proj0 Sense1_Param_subst0 Sense1_Param_proj'0 Sense1_Param_subst'0)
(reparam_EF0 :  'CoMod_$( PParam_EF0 ~> PParam_EF'0 @_ Sense1_Param_reparam_EF0 ))

(Sense1_Param_reparam_conv_param_ff : _ )
(reparam_conv_param_ff :  'CoMod_$( PParam_EF' ~> PParam_EF'0 @_ Sense1_Param_reparam_conv_param_ff )),
  param_ff0 [reparam_conv_param_ff]<~~__ param_ff ->

forall (Sense00_Param_DE0 : obGenerator -> Type)
(Sense01_Param_DE0 : Sense01_Param_data Sense00_Param_DE0)
(Sense1_Param_proj_ee0 : Sense1_Param_data Sense01_Param_DE0 Sense01_Param_D)
(Sense1_Param_subst_ee0 : Sense1_Param_data Sense01_Param_DE0 Sense01_Param_E)
(PParam_DE0 : pseudoCode_PParam  Sense1_Param_proj_ee0 Sense1_Param_subst_ee0)
(param_ee0 : 'CoMod__( Param_D ~> Param_E @_ PParam_DE0 ))

(Sense1_Param_reparam_conv_param_ee : _ )
(reparam_conv_param_ee :  'CoMod_$( PParam_DE ~> PParam_DE0 @_ Sense1_Param_reparam_conv_param_ee )),
  param_ee0 [reparam_conv_param_ee]<~~__ param_ee ->

forall (Coh_reparam_EF0 : reparam_EF0 ~~_$ (Rev_reparam reparam_conv_ff) o>_$ (reparam_EF o>_$ reparam_conv_param_ff)),

(** AMBUSH /!\ TODO: create codes for Sense1_Form and reformulate conv_sense as codes 'CoMod$ which carry only-proofs no-data , and is carried by the conversion relation *)
  ( Formatting ff0 param_ff0 reparam_EF0 param_ee0 )
    [ ( Compos_pseudoCode_PParam_cong (Formatting_cong_reparam reparam_conv_ff congr_conv_ff) reparam_conv_param_ee ) ]<~~__
    ( Formatting ff param_ff reparam_EF param_ee )

| morCoMod_PParam_comp_Unit_PParam : forall Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)
                    Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F)
                    Sense00_Param_EF  (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
                    (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
                    (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
                    (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
                    (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF )),

   ( param_ff )
     [ morCoMod_comp_Unit_reparam PParam_EF ]<~~__
     ( param_ff o>CoMod__ (Unit_PParam Param_F) )

| Unit_PParam_comp_morCoMod_PParam : forall Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)
                    Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F)
                    Sense00_Param_EF  (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
                    (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
                    (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
                    (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
                    (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF )),

   ( param_ff )
     [ Unit_comp_morCoMod_reparam PParam_EF ]<~~__
     ( (Unit_PParam Param_E) o>CoMod__ param_ff  )

| ViewMor_PParam_comp_ViewMor_PParam : (**MEMO: THIS ACTION POLYMORPHISM IS ALREADY THE MOST GENERAL POSSIBLE CONGRUENCE , SO THE NON-LACKED COMMON CONGRUENCE OCCURS AS META/DEFINITIONAL-CONVERSION ONLY *)
    forall (Q : obParametrizator) (G : obGenerator) (p : 'Parametrizator(  Parameter0 G ~> Q )) (P : obParametrizator) (inFibre_P : inFibre G P)
      (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
      (pp : viewingDefault_Constructel_Param p cons_inFibre_P),
    forall  (G' : obGenerator) (p' : 'Parametrizator(  Parameter0 G' ~> P )) (P' : obParametrizator) (inFibre_P' : inFibre G' P') (cons_inFibre_P' : inFibreDefault_Constructel_Param inFibre_P')
       (p'p' : viewingDefault_Constructel_Param p' cons_inFibre_P'),

      ( ViewMor_PParam (p:=((inFibre_transp_codom inFibre_P p') o>Parametrizator p))
                      (viewingDefault_Constructel_Param_action pp p'p'))
     [ ViewMor_PParam_comp_ViewMor_PParam_reparam pp p'p'  ]<~~__
     (( ViewMor_PParam p'p') o>CoMod__ ( ViewMor_PParam pp ))

| ViewMor_PParam_comp_Constructing_PParam_default : (**MEMO: THIS ACTION POLYMORPHISM IS ALREADY THE MOST GENERAL POSSIBLE CONGRUENCE , SO THE NON-LACKED COMMON CONGRUENCE OCCURS AS META/DEFINITIONAL-CONVERSION ONLY *)
forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),

 forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
forall (G' : obGenerator) (p' : 'Parametrizator( Parameter0 G' ~> P )) (P' : obParametrizator) (inFibre_P' : inFibre G' P')
  (cons_inFibre_P' : inFibreDefault_Constructel_Param inFibre_P')
  (p'p' : viewingDefault_Constructel_Param p' cons_inFibre_P' ),

  ( Constructing_PParam_default  (constructel_Param_action cons_paramlocal p'p' (eq_refl _))  )

     [ ViewMor_PParam_comp_Constructing_PParam_default_reparam cons_paramlocal p'p' ]<~~__
     (( ViewMor_PParam p'p' ) o>CoMod__ ( Constructing_PParam_default cons_paramlocal ))

| UnitViewedFunctor_PParam_default_morphism' :
forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
  (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
  (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
  (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
  (param_ff : 'CoMod__( Param_E ~> Param_F  @_ PParam_EF )),

forall Sense00_Param_D (Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
  (Param_D : @obCoMod_Param Sense00_Param_D Sense01_Param_D),

forall Sense00_Param_DE (Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
  (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D)
  (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
  (PParam_DE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee)
  (param_ee : 'CoMod__( Param_D ~> Param_E  @_ PParam_DE )),

  ( UnitViewedFunctor_PParam_default ( param_ee o>CoMod__ param_ff ) )
    [  (Assoc_reparam _ _ _)  ]<~~__
    ( param_ee o>CoMod__ ( UnitViewedFunctor_PParam_default param_ff ) )

| UnitViewedFunctor_PParam_default_morphismPost' :
forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
  (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
  (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
  (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
  (param_ff : 'CoMod__( Param_E ~> Param_F  @_ PParam_EF )),

forall Sense00_Param_D (Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
  (Param_D : @obCoMod_Param Sense00_Param_D Sense01_Param_D),

forall Sense00_Param_DE (Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
  (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D)
  (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
  (PParam_DE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee)
  (param_ee : 'CoMod__( Param_D ~> Param_E  @_ PParam_DE )),

  ( UnitViewedFunctor_PParam_default ( param_ee o>CoMod__ param_ff ) )
    [ (Rev_reparam (Assoc_reparam _ _ _))
          o>_$ ( Compos_pseudoCode_PParam_cong (UnitViewedFunctor_PParam_default_morphismPost_reparam' PParam_EF) (Refl_reparam PParam_DE) )
             o>_$ (Assoc_reparam _ _ _)  ]<~~__
    ( ( UnitViewedFunctor_PParam_default param_ee ) o>CoMod__ ( ViewedFunctor1_PParam_default param_ff ) )

| ViewedFunctor1_PParam_default_morphism :
forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
  (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
  (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
  (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
  (param_ff : 'CoMod__( Param_E ~> Param_F  @_ PParam_EF )),

forall Sense00_Param_D (Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
  (Param_D : @obCoMod_Param Sense00_Param_D Sense01_Param_D),

forall Sense00_Param_DE (Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
  (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D)
  (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
  (PParam_DE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee)
  (param_ee : 'CoMod__( Param_D ~> Param_E  @_ PParam_DE )),

  ( ViewedFunctor1_PParam_default ( param_ee o>CoMod__ param_ff ) )
    [ ViewedFunctor1_PParam_default_morphism_reparam PParam_EF PParam_DE ]<~~__
    ( ( ViewedFunctor1_PParam_default param_ee ) o>CoMod__ ( ViewedFunctor1_PParam_default param_ff ) )

| Destructing_PParam_default_morphism :
 forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),

forall (Sense00_Param_K : obGenerator -> Type)
  (Sense01_Param_K : Sense01_Param_data Sense00_Param_K),

forall (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
      Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
  (Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
  (PParam_ee_ :  pseudoCode_PParam_Family Sense1_Param_ee_morphism),

forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),

forall (Sense00_Param_ee'__ : obGenerator -> Type) (Sense01_Param_ee'__ : Sense01_Param_data Sense00_Param_ee'__)
  (Sense1_Param_proj_ee'__ : Sense1_Param_data Sense01_Param_ee'__ Sense01_Param_K) (Sense1_Param_subst_ee'__ : Sense1_Param_data Sense01_Param_ee'__ Sense01_Param_E)
  (PParam_ee'__ : pseudoCode_PParam Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__),

forall (Sense00_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), obGenerator -> Type)
(Sense01_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), Sense01_Param_data (Sense00_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subst0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                    (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal )),

forall (Sense1_Param_reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__
                                                 (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal))
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__
                                                  (Sense1_Param_ee_ G paramlocal))
      (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal)
                          ~> PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))),

 forall Sense00_Param_D Sense01_Param_D
   (Param_D : @obCoMod_Param Sense00_Param_D Sense01_Param_D),
 forall Sense00_Param_ED (Sense01_Param_ED : Sense01_Param_data Sense00_Param_ED)
   (Sense1_Param_proj_dd : Sense1_Param_data Sense01_Param_ED Sense01_Param_E)
   (Sense1_Param_subst_dd : Sense1_Param_data Sense01_Param_ED Sense01_Param_D)
   (PParam_ED : pseudoCode_PParam Sense1_Param_proj_dd Sense1_Param_subst_dd)
   (param_dd : 'CoMod__( Param_E ~> Param_D @_ PParam_ED )),

   ( Destructing_PParam_default
                       (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal => (param_ee_ G paramlocal  P inFibre_P cons_inFibre_P cons_paramlocal) o>CoMod__ param_dd)
                       (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal => (Assoc_reparam PParam_ED PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal))
                                                              o>_$ (Compos_pseudoCode_PParam_cong (Refl_reparam _) (reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))) )

    [ (Rev_reparam (Assoc_reparam _ _ _))
        o>_$ (Compos_pseudoCode_PParam_cong (ViewedFunctor1_PParam_default_morphism_reparam PParam_ED PParam_ee'__) (Refl_reparam _)) ]<~~__

    ( ( Destructing_PParam_default  param_ee_ reparam_ee_ )
        o>CoMod__ ( ViewedFunctor1_PParam_default param_dd ) )

|  Constructing_PParam_default_comp_Destructing_PParam_default :
 forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),

forall (Sense00_Param_K : obGenerator -> Type)
  (Sense01_Param_K : Sense01_Param_data Sense00_Param_K),

forall (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
      Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
  (Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
  (PParam_ee_ :  pseudoCode_PParam_Family Sense1_Param_ee_morphism),

forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),

forall (Sense00_Param_ee'__ : obGenerator -> Type) (Sense01_Param_ee'__ : Sense01_Param_data Sense00_Param_ee'__)
  (Sense1_Param_proj_ee'__ : Sense1_Param_data Sense01_Param_ee'__ Sense01_Param_K) (Sense1_Param_subst_ee'__ : Sense1_Param_data Sense01_Param_ee'__ Sense01_Param_E)
  (PParam_ee'__ : pseudoCode_PParam Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__),

forall (Sense00_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), obGenerator -> Type)
(Sense01_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), Sense01_Param_data (Sense00_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subst0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                    (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal )),

forall (Sense1_Param_reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__
                                                 (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal))
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__
                                                  (Sense1_Param_ee_ G paramlocal))
      (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal)
                          ~> PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))),

 forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),

  (UnitViewedFunctor_PParam_default ( param_ee_ G paramlocal P inFibre_P cons_inFibre_P  cons_paramlocal ))

    [ (Assoc_reparam _ _ _)
        o>_$ (Compos_pseudoCode_PParam_cong (Refl_reparam _)
                                                (Constructing_PParam_default_comp_Destructing_PParam_default_reparam PParam_ee_ cons_paramlocal) )
           o>_$ (Rev_reparam (Assoc_reparam _ _ _))
              o>_$ (Compos_pseudoCode_PParam_cong (UnitViewedFunctor_PParam_default_morphismPost_reparam' _)
                                                      (Refl_reparam _))
                 o>_$ (Assoc_reparam _ _ _)
                    o>_$ (Compos_pseudoCode_PParam_cong (Refl_reparam _)
                                                (reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)) ]<~~__

    ( ( Constructing_PParam_default cons_paramlocal )
        o>CoMod__ ( Destructing_PParam_default  param_ee_ reparam_ee_ ) )

| Formatting_morphism :
forall (Sense00_Form_E : obGenerator -> Type)
(Sense01_Form_E : Sense01_data Sense00_Form_E)
(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)
(Sense00_Form_F : obGenerator -> Type)
(Sense01_Form_F : Sense01_data Sense00_Form_F)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
(F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)

(Sense00_Param_EF : obGenerator -> Type)
(Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
(Sense1_Param_proj : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
(PParam_EF : pseudoCode_PParam  Sense1_Param_proj Sense1_Param_subst)

(Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
(Form_ff : pseudoCode Sense1_Form_ff)
(ff : 'CoMod( E ~> F @_  PParam_EF @^ Form_ff ))

(Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)
(Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F)

(Sense00_Param_EF' : obGenerator -> Type)
(Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF')
(Sense1_Param_proj' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
(Sense1_Param_subst' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F)
(PParam_EF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
(param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF' ))

(Sense1_Param_reparam_EF : reparamCongr Sense1_Param_proj Sense1_Param_subst Sense1_Param_proj' Sense1_Param_subst')
(reparam_EF :  'CoMod_$( PParam_EF ~> PParam_EF' @_ Sense1_Param_reparam_EF ))

(Sense00_Param_D : obGenerator -> Type)
(Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
(Param_D : obCoMod_Param Sense01_Param_D)
(Sense00_Param_DE : obGenerator -> Type)
(Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
(Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D)
(Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
(PParam_DE : pseudoCode_PParam  Sense1_Param_proj_ee Sense1_Param_subst_ee)
(param_ee : 'CoMod__( Param_D ~> Param_E @_ PParam_DE )),

forall (Sense00_Param_C : obGenerator -> Type)
(Sense01_Param_C : Sense01_Param_data Sense00_Param_C)
(Param_C : obCoMod_Param Sense01_Param_C)
(Sense00_Param_CD : obGenerator -> Type)
(Sense01_Param_CD : Sense01_Param_data Sense00_Param_CD)
(Sense1_Param_proj_dd : Sense1_Param_data Sense01_Param_CD Sense01_Param_C)
(Sense1_Param_subst_dd : Sense1_Param_data Sense01_Param_CD Sense01_Param_D)
(PParam_CD : pseudoCode_PParam  Sense1_Param_proj_dd Sense1_Param_subst_dd)
(param_dd : 'CoMod__( Param_C ~> Param_D @_ PParam_CD )),

    ( Formatting ff param_ff reparam_EF (param_dd o>CoMod__ param_ee) )
      [ (Assoc_reparam _ _ _)  ]<~~__
      ( param_dd o>CoMod__ (Formatting ff param_ff reparam_EF param_ee) )

(*  forall YKK (KK : 'CoMod_$ ( _ ~> _ @_ YKK )), forall (YKK2 : Congr_data _ _ YKK) (KK2 : 'CoMod$ ( _ ~> _ @_ YKK2 )),   *)
where "param_ff0  [  reparam_rr  ]<~~__ param_ff" := (@convCoMod_PParam _ _ _ _ _ _ _ _ _ _ _ param_ff _ _ _ _ _ param_ff0  _ reparam_rr).

Hint Constructors convCoMod convCoMod_PParam : core.
(** # #
#+END_SRC

* Linear total/asymptotic grade and the degradation lemma

#+BEGIN_SRC coq :exports both :results silent # # **)
Notation max m n := (Nat.add m (Nat.sub n m)).
Arguments Nat.sub : simpl nomatch.
Arguments Nat.add : simpl nomatch.

Notation InFibre_Unit := (Unit_inFibreDefault_Constructel_Param _).
Notation True_Binary_Unit := (True_Binary Unit_viewingDefault_Constructel_Param_Binary).
Notation False_Binary_Unit := (False_Binary Unit_viewingDefault_Constructel_Param_Binary).
Notation True_Binary_Form_Unit := (True_Binary_Form Unit_viewingDefault_Constructel_Param_Form_Binary).
Notation False_Binary_Form_Unit := (False_Binary_Form Unit_viewingDefault_Constructel_Param_Form_Binary).

Fixpoint gradeCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
         (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)
         Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
         (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
         Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
         (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
         (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
         (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
         (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
         (Form_ff : pseudoCode Sense1_Form_ff)
         (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )) {struct ff} : nat
with gradeCoMod_PParam Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)
                    Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F)
                    Sense00_Param_EF  (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
                    (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
                    (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
                    (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
                    (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF )) {struct param_ff} : nat .
Proof.
{ case : Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E E Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F F  Sense00_Param_EF Sense01_Param_EF  Sense1_Param_proj_ff Sense1_Param_subst_ff PParam_EF Sense1_Form_ff Form_ff / ff.
  - (** Compos *) intros.
    exact: ( 2 * (S (gradeCoMod _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _  ff_ + gradeCoMod _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff')%nat ) )%nat .
  - (** Unit *) intros.
    exact: (S O).
  - (** ViewMor *)  intros.
    exact: (S O).
  -  (** Constructing_default *) intros.
     exact: (S (S O)).
  - (** ViewedFunctor1_default *) intros.
    exact: (S (gradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _ param_ff + gradeCoMod _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff)%nat ) .
  - (**  UnitViewedFunctor_default *) intros.
    exact: (S (gradeCoMod _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff)%nat ) .
  - (** Destructing_default *) intros. destruct F.
    exact (S (S ((max (gradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _
                         (param_ee_ GBinary (unitParametrizator o>Parametrizator_ true_Binary GBinary) (Parameter0 GBinary) (InFibre GBinary)
                                    InFibre_Unit True_Binary_Unit))
                      (gradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _
                         (param_ee_ GBinary (unitParametrizator o>Parametrizator_ false_Binary GBinary) (Parameter0 GBinary) (InFibre GBinary)
                                    InFibre_Unit False_Binary_Unit))) +
                 (max (gradeCoMod _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                                  (ee__ GBinary (Parameter1 unitGenerator o>Parametrizator_ true_Binary GBinary)
                                        True_Binary_Unit
                                        (unitGenerator o>GeneratorAtParam_ true_Binary_Form GBinary)
                                        True_Binary_Form_Unit))
                      (gradeCoMod _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                                  (ee__ GBinary (Parameter1 unitGenerator o>Parametrizator_ false_Binary GBinary)
                                        False_Binary_Unit
                                        (unitGenerator o>GeneratorAtParam_ false_Binary_Form GBinary)
                                        False_Binary_Form_Unit))))%nat )).
  - (** Forget *) intros.
    exact: ( S (S (gradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _ param_forget' + gradeCoMod _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ee)%nat ) ) .
  - (** Remember *) intros.
    exact: ( S (S (gradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _ param_forget' + gradeCoMod _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ll)%nat ) ) . }

{ case : Sense00_Param_E Sense01_Param_E Param_E Sense00_Param_F Sense01_Param_F Param_F Sense00_Param_EF Sense01_Param_EF Sense1_Param_proj_ff Sense1_Param_subst_ff PParam_EF / param_ff.
  - (** Compos_PParam *) intros.
    exact: ( 2 * (S (gradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _ param_ff_ + gradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _ param_ff')%nat ) )%nat .
  - (** Unit_PParam *) intros.
    exact: (S O ).
  - (** ViewMor_PParam *) intros.
    exact: (S O).
  - (** Constructing_PParam_default *) intros.
    exact: (S (S O)).
  - (** ViewedFunctor1_PParam_default *) intros.
    exact: (S (gradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _ param_ff)%nat ).
  - (** UnitViewedFunctor_PParam_default *) intros.
    exact: (S (gradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _ param_ff)%nat).
  - (** Destructing_PParam_default *) intros. destruct Param_SubstF.
    exact (S (S (max (gradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _
                         (param_ee_ GBinary (unitParametrizator o>Parametrizator_ true_Binary GBinary) (Parameter0 GBinary) (InFibre GBinary)
                                    InFibre_Unit True_Binary_Unit))
                      (gradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _
                         (param_ee_ GBinary (unitParametrizator o>Parametrizator_ false_Binary GBinary) (Parameter0 GBinary) (InFibre GBinary)
                                    InFibre_Unit False_Binary_Unit))))).
  - (** Formatting *) intros.
    exact: ( S (S (gradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _ param_ee + (gradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _ param_ff + gradeCoMod _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff)%nat )%nat ) ) . }
Defined.

Ltac tac_simpl_Data  :=
   match goal with
         | [ Param_SubstF : obCoMod_Param_Data ?Sense1_Param_subst ,
             F : obCoMod_Data ?Sense1_FormParam_F ?Sense1_Param_proj ?Param_SubstF
             |- _ ] => destruct F; simpl gradeCoMod; simpl gradeCoMod_PParam
         | [ Param_SubstF : obCoMod_Param_Data ?Sense1_Param_subst
             |- _ ] => destruct Param_SubstF; simpl gradeCoMod; simpl gradeCoMod_PParam
         | [  |- _ ] => simpl gradeCoMod; simpl gradeCoMod_PParam
         end.

Arguments gradeCoMod : simpl nomatch.
Arguments gradeCoMod_PParam : simpl nomatch.

Lemma gradeCoMod_gt0 Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
         (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)
         Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
         (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
         Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
         (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
         (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
         (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
         (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
         (Form_ff : pseudoCode Sense1_Form_ff)
         (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )) : ((S O) <= (gradeCoMod ff))%nat
with gradeCoMod_PParam_gt0 Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)
                    Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F)
                    Sense00_Param_EF  (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
                    (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
                    (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
                    (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
                    (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF )) : ((S O) <= (gradeCoMod_PParam param_ff))%nat .
Proof.
{ Time case : Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E E Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F F  Sense00_Param_EF Sense01_Param_EF  Sense1_Param_proj_ff Sense1_Param_subst_ff PParam_EF Sense1_Form_ff Form_ff / ff ;
    intros; tac_simpl_Data; abstract Lia.lia. (** Finished transaction in 18.908 secs (18.887u,0.01s) (successful) ; 23sec ; 4secs *) }

{ case : Sense00_Param_E Sense01_Param_E Param_E Sense00_Param_F Sense01_Param_F Param_F Sense00_Param_EF Sense01_Param_EF Sense1_Param_proj_ff Sense1_Param_subst_ff PParam_EF / param_ff  ;
    intros; tac_simpl_Data; abstract Lia.lia. }
Qed.

Ltac tac_gradeCoMod_gt0 :=
  match goal with
  | [ gg1 : 'CoMod( _ ~> _ @_ _ @^ _ ) ,
            gg2 : 'CoMod( _ ~> _ @_ _ @^ _ ) ,
                  gg3 : 'CoMod( _ ~> _ @_ _ @^ _ ) ,
                        gg4 : 'CoMod( _ ~> _ @_ _ @^ _ ) |- _ ] =>
    move : (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gg1) (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gg2)
                                          (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gg3)
                                          (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gg4)
  | [ gg1 : 'CoMod( _ ~> _ @_ _ @^ _ ) ,
            gg2 : 'CoMod( _ ~> _ @_ _ @^ _ ) ,
                  gg3 : 'CoMod( _ ~> _ @_ _ @^ _ ) |- _ ] =>
    move : (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gg1) (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gg2)
                                          (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gg3)
  | [ gg1 : 'CoMod( _ ~> _ @_ _ @^ _ ) ,
            gg2 : 'CoMod( _ ~> _ @_ _ @^ _ )  |- _ ] =>
    move : (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gg1) (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gg2)
  | [ gg1 : 'CoMod( _ ~> _ @_ _ @^ _ )  |- _ ] =>
    move : (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ gg1)
  end.

Ltac tac_gradeCoMod_PParam_gt0 :=
  match goal with
  | [ gg1 : 'CoMod__( _ ~> _ @_ _ ) ,
            gg2 : 'CoMod__( _ ~> _ @_ _ ) ,
                  gg3 : 'CoMod__( _ ~> _ @_ _ ) ,
                        gg4 : 'CoMod__( _ ~> _ @_ _ ) |- _ ] =>
    move : (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _ gg1)
             (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _ gg2)
             (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _ gg3)
             (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _ gg4)
  | [ gg1 : 'CoMod__( _ ~> _ @_ _ ) ,
            gg2 : 'CoMod__( _ ~> _ @_ _ ) ,
                  gg3 : 'CoMod__( _ ~> _ @_ _ ) |- _ ] =>
    move : (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _ gg1)
             (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _ gg2)
             (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _ gg3)
  | [ gg1 : 'CoMod__( _ ~> _ @_ _ ) ,
            gg2 : 'CoMod__( _ ~> _ @_ _ )  |- _ ] =>
    move : (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _ gg1)
             (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _ gg2)
  | [ gg1 : 'CoMod__( _ ~> _ @_ _ )  |- _ ] =>
    move : (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _ gg1)
  end.

Ltac tac_gradeCoMod_gt0_Data :=
match goal with
| [ gg1 : (forall (G : obGenerator) (param : ?Sense00_Param_SubstF G)
             (cons_paramlocal : constructel_Param ?Param_SubstF (sval ?Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
             (form : Sense00_AtParam_ ?Sense1_FormParam_F ?Sense1_Param_proj param)
             (cons_form : constructel_Form ?F  form),
              'CoMod( _ ~> _ @_ _ @^ _ )),
    gg2 : (forall (G : obGenerator) (param : ?Sense00_Param_SubstF G)
             (cons_paramlocal : constructel_Param ?Param_SubstF (sval ?Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
             (form : Sense00_AtParam_ ?Sense1_FormParam_F ?Sense1_Param_proj param)
             (cons_form : constructel_Form ?F  form),
              'CoMod( _ ~> _ @_ _ @^ _ ))
    |- _ ] => try (move:
              (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                               (@gg1 _ _ True_Binary_Unit _ True_Binary_Form_Unit))
                (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                                 (@gg1 _ _ False_Binary_Unit _ False_Binary_Form_Unit))
                (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                                 (@gg2 _ _ True_Binary_Unit _ True_Binary_Form_Unit))
                (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                                 (@gg2 _ _ False_Binary_Unit _ False_Binary_Form_Unit)))

| [ gg1 : (forall (G : obGenerator) (param : ?Sense00_Param_SubstF G)
             (cons_paramlocal : constructel_Param ?Param_SubstF (sval ?Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
             (form : Sense00_AtParam_ ?Sense1_FormParam_F ?Sense1_Param_proj param)
             (cons_form : constructel_Form ?F  form),
              'CoMod( _ ~> _ @_ _ @^ _ ))
    |- _ ] => try (move:
              (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                               (@gg1 _ _ True_Binary_Unit _ True_Binary_Form_Unit))
                (@gradeCoMod_gt0 _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                                 (@gg1 _ _ False_Binary_Unit _ False_Binary_Form_Unit)))
end.

Ltac tac_gradeCoMod_PParam_gt0_Data :=
match goal with
| [ gg1 : (forall (G : obGenerator) (paramlocal : ?Sense00_Param_SumSubstF G)
             (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
             (cons_paramlocal : constructel_Param ?Param_SubstF paramlocal cons_inFibre_P ),
             'CoMod__( _ ~> _ @_ _ )),
    gg2 : (forall (G : obGenerator) (paramlocal : ?Sense00_Param_SumSubstF G)
             (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
             (cons_paramlocal : constructel_Param ?Param_SubstF paramlocal cons_inFibre_P ),
              'CoMod__( _ ~> _ @_ _ ))
    |- _ ] => try (move:
              (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _
                          (@gg1 _ _ _ _ InFibre_Unit True_Binary_Unit))
              (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _
                          (@gg1 _ _ _ _ InFibre_Unit False_Binary_Unit))
              (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _
                          (@gg2 _ _ _ _ InFibre_Unit True_Binary_Unit))
              (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _
                          (@gg2 _ _ _ _ InFibre_Unit False_Binary_Unit)))
| [ gg1 : (forall (G : obGenerator) (paramlocal : ?Sense00_Param_SumSubstF G)
             (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
             (cons_paramlocal : constructel_Param ?Param_SubstF paramlocal cons_inFibre_P ),
             'CoMod__( _ ~> _ @_ _ ))
    |- _ ] => try (move:
              (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _
                          (@gg1 _ _ _ _ InFibre_Unit True_Binary_Unit))
              (@gradeCoMod_PParam_gt0 _ _ _ _ _ _ _ _ _ _ _
                          (@gg1 _ _ _ _ InFibre_Unit False_Binary_Unit)))
end.

Ltac tac_induction_degrade degradeCoMod degradeCoMod_PParam :=
  repeat match goal with
         | [ conv_ff : ( _ [ _ @^ _ ]<~~ _ )%poly  |- _ ] =>
           move: {conv_ff} (degradeCoMod _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ conv_ff)

         | [ conv_param_ff : ( _ [ _ ]<~~__ _ )%poly  |- _ ] =>
           move: {conv_param_ff} (degradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ conv_param_ff)
         end.

Ltac tac_induction_degrade_Data degradeCoMod degradeCoMod_PParam :=
  repeat match goal with
         | [ conv_ee__ : (forall (G : obGenerator) (param : ?Sense00_Param_SubstF G)
                       (cons_paramlocal : constructel_Param ?Param_SubstF (sval ?Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
                       (form : Sense00_AtParam_ ?Sense1_FormParam_F ?Sense1_Param_proj param)
                       (cons_form : constructel_Form ?F  form),
                          ( _ [ _ @^ _ ]<~~ _ )%poly )
             |- _ ] =>
           try move: (degradeCoMod _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                                      (conv_ee__ GBinary (Parameter1 unitGenerator o>Parametrizator_ true_Binary GBinary)
                                        True_Binary_Unit
                                        (unitGenerator o>GeneratorAtParam_ true_Binary_Form GBinary)
                                        True_Binary_Form_Unit))
                        (degradeCoMod _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                                      (conv_ee__ GBinary (Parameter1 unitGenerator o>Parametrizator_ false_Binary GBinary)
                                        False_Binary_Unit
                                        (unitGenerator o>GeneratorAtParam_ false_Binary_Form GBinary)
                                        False_Binary_Form_Unit));
           clear conv_ee__

         | [ conv_param_ee_ : (forall (G : obGenerator) (paramlocal : ?Sense00_Param_SumSubstF G)
                       (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
                       (cons_paramlocal : constructel_Param ?Param_SubstF paramlocal cons_inFibre_P ),
                          ( _ [ _ ]<~~__ _ )%poly )
             |- _ ] =>
           try move: (degradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                                              (conv_param_ee_ GBinary (unitParametrizator o>Parametrizator_ true_Binary GBinary) (Parameter0 GBinary) (InFibre GBinary) InFibre_Unit True_Binary_Unit))
                        (degradeCoMod_PParam _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                                              (conv_param_ee_ GBinary (unitParametrizator o>Parametrizator_ false_Binary GBinary) (Parameter0 GBinary) (InFibre GBinary) InFibre_Unit False_Binary_Unit));
           clear conv_param_ee_
         end.

Ltac tac_constructel_Param_Data  :=
   match goal with
         | [ G : obGenerator,
             param : ?Sense00_Param_SubstF ?G ,
             cons_paramlocal : constructel_Param ?Param_SubstF (sval ?Sense1_Param_subst ?G ?param) (Unit_inFibreDefault_Constructel_Param ?G),
             form : Sense00_AtParam_ ?Sense1_FormParam_F ?Sense1_Param_proj ?param,
             cons_form : constructel_Form ?F  ?form
             |- _ ] =>
           try (destruct (constructel_Form_dataBinary_prop cons_form) as [? ? gg | ? ? gg] ;
           destruct (viewingDefault_Constructel_Param_Form_codomBinary_prop gg) ;
           destruct (constructel_Param_dataTrueFalse_prop cons_paramlocal))
         | [ G : obGenerator,
           paramlocal : ?Sense00_Param_SumSubstF ?G,
           P : obParametrizator,
           inFibre_P : inFibre ?G ?P ,
           cons_inFibre_P : inFibreDefault_Constructel_Param ?inFibre_P ,
           cons_paramlocal : constructel_Param ?Param_SubstF ?paramlocal ?cons_inFibre_P
             |- _ ] =>
         try (destruct (constructel_Param_dataBinary_prop cons_paramlocal) as [ ? ? ? ? ? pp | ? ? ? ? ? pp ] ;
         destruct (viewingDefault_Constructel_Param_codomBinary_prop pp))
   end.

Ltac tac_degrade0 degradeCoMod degradeCoMod_PParam  :=
   match goal with
         | [ Param_SubstF : obCoMod_Param_Data ?Sense1_Param_subst ,
             F : obCoMod_Data ?Sense1_FormParam_F ?Sense1_Param_proj ?Param_SubstF
             |- context [ Destructing_default ] ] =>
           destruct F;
           simpl gradeCoMod; simpl gradeCoMod_PParam; intros;
           try tac_gradeCoMod_gt0; try tac_gradeCoMod_PParam_gt0;
           try tac_gradeCoMod_gt0_Data; try tac_gradeCoMod_PParam_gt0_Data;
           tac_induction_degrade degradeCoMod degradeCoMod_PParam;
           tac_induction_degrade_Data degradeCoMod degradeCoMod_PParam;
           try tac_constructel_Param_Data

         | [ Param_SubstF : obCoMod_Param_Data ?Sense1_Param_subst
             |- context [ Destructing_PParam_default ] ] =>
           destruct Param_SubstF;
           simpl gradeCoMod; simpl gradeCoMod_PParam; intros;
           try tac_gradeCoMod_gt0; try tac_gradeCoMod_PParam_gt0;
           try tac_gradeCoMod_gt0_Data; try tac_gradeCoMod_PParam_gt0_Data;
           tac_induction_degrade degradeCoMod degradeCoMod_PParam;
           tac_induction_degrade_Data degradeCoMod degradeCoMod_PParam;
           try tac_constructel_Param_Data

         | [  |- _ ] => simpl gradeCoMod; simpl gradeCoMod_PParam; intros;
                      try tac_gradeCoMod_gt0; try tac_gradeCoMod_PParam_gt0;
                      tac_induction_degrade degradeCoMod degradeCoMod_PParam
         end;
   simpl gradeCoMod; simpl gradeCoMod_PParam;
   intros; abstract Lia.lia.

Lemma degradeCoMod : forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
 (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E),
 forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
   (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E),
 forall Sense1_Param_subst_ff (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
   Sense1_Form_ff (Form_ff : pseudoCode Sense1_Form_ff) (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )),
 forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0)
   (Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E)
   Sense1_Param_subst_ff0 (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0)
   Sense1_Form_ff0 (Form_ff0 : pseudoCode Sense1_Form_ff0) (ff0 : 'CoMod( E ~> F @_ PParam_EF0 @^ Form_ff0 )),
 forall Sense1_Param_reparam_EF (reparam_EF : 'CoMod_$( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_EF )),
 forall (Congr_congr_ff : Congr_data Sense1_Form_ff Sense1_Form_ff0 Sense1_Param_reparam_EF)
   (congr_ff : 'CoMod$ ( Form_ff ~> Form_ff0 @_ Congr_congr_ff )),
 forall convCoMod_ff0_ff : ff0 [  reparam_EF  @^ congr_ff ]<~~ ff ,
   ( gradeCoMod ff0 <= gradeCoMod ff )%nat
with degradeCoMod_PParam : forall Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
 forall Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
 forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
 forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
 forall (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF )),
 forall Sense00_Param_EF0 (Sense01_Param_EF0 : Sense01_Param_data Sense00_Param_EF0),
 forall Sense1_Param_proj_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_E,
 forall Sense1_Param_subst_ff0 : Sense1_Param_data Sense01_Param_EF0 Sense01_Param_F,
 forall (PParam_EF0 : pseudoCode_PParam Sense1_Param_proj_ff0 Sense1_Param_subst_ff0),
 forall (param_ff0 : 'CoMod__( Param_E ~> Param_F @_  PParam_EF0 )),
 forall Sense1_Param_reparam_EF (reparam_EF : 'CoMod_$( PParam_EF ~> PParam_EF0 @_ Sense1_Param_reparam_EF)),
 forall convCoMod_PParam_param_ff0_param_ff : param_ff0  [  reparam_EF  ]<~~__ param_ff ,
   ( gradeCoMod_PParam param_ff0 <= gradeCoMod_PParam param_ff )%nat .
Proof.
  Time all : [> intros; case: Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
 E Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
   F Sense00_Param_EF Sense01_Param_EF Sense1_Param_proj_ff Sense1_Param_subst_ff PParam_EF
   Sense1_Form_ff Form_ff ff Sense00_Param_EF0 Sense01_Param_EF0  Sense1_Param_proj_ff0
   Sense1_Param_subst_ff0 PParam_EF0 Sense1_Form_ff0 Form_ff0 ff0  Sense1_Param_reparam_EF reparam_EF Congr_congr_ff congr_ff / convCoMod_ff0_ff
             | intros; case: Sense00_Param_E Sense01_Param_E Param_E Sense00_Param_F Sense01_Param_F Param_F Sense00_Param_EF Sense01_Param_EF Sense1_Param_proj_ff Sense1_Param_subst_ff  PParam_EF param_ff Sense00_Param_EF0 Sense01_Param_EF0 Sense1_Param_proj_ff0 Sense1_Param_subst_ff0 PParam_EF0 param_ff0  Sense1_Param_reparam_EF reparam_EF / convCoMod_PParam_param_ff0_param_ff ];
    intros; try solve [ tac_degrade0 degradeCoMod degradeCoMod_PParam ].
  (* Time: Finished transaction in 361.96 secs (361.935u,0.01s) (successful) *)
  (* Finished transaction in 3.491 secs (3.491u,0.s) (successful) *)
  (* Finished transaction in 21.574 secs (21.566u,0.007s) (successful) *)
  (* Finished transaction in 173.196 secs (172.912u,0.095s) (successful) *)
Qed.

Ltac tac_degrade := tac_degrade0 (@degradeCoMod) (@degradeCoMod_PParam).
(** # #
#+END_SRC

* Solution morphisms

** Solution morphisms without composition

#+BEGIN_SRC coq :exports both :results silent # # **)
Module Sol.
Section Section1.
Declare Scope sol_scope. Delimit Scope sol_scope with sol.

Inductive morCoMod : forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
 (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E),
 forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
   (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
   (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
   (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
   (Form_ff : pseudoCode Sense1_Form_ff ), Type :=

| Unit : forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
                (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
    'CoMod( F ~> F @_ Unit_pseudoCode_PParam Sense01_Param_F @^ Unit_pseudoCode Sense1_FormParam_F )

(**TODO: should viewingDefault_Constructel_Param_Form  also carry a viewingDefault_Constructel_Param code for (Parameter1 g) (InFibre G) ? *)
| ViewMor : forall (G H : obGenerator) (g : 'Generator( G ~> H (** | H_Viewing ... only the viewing elements*)))
            (gg : viewingDefault_Constructel_Param_Form g),
      'CoMod( View G ~> View H @_ (ViewMor_pseudoCode_PParam (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form gg))
                   @^ ViewMor_pseudoCode gg )

| Constructing_default :
forall (Sense00_Form_F : obGenerator -> Type)
  (Sense01_Form_F : Sense01_data Sense00_Form_F)
  (Sense00_Param_F : obGenerator -> Type)
  (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
  (Sense00_Param_SubstF : obGenerator -> Type)
  (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
  (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
  (Sense00_Param_SumSubstF : obGenerator -> Type)
  (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
  (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
  (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
  (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

forall (G : obGenerator) (param : Sense00_Param_SubstF G)
  (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
  (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
  (cons_form : constructel_Form F  form),

  'CoMod( View G ~> ViewingFunctorSumSubst_default F
               @_ (AtMember_PParam (Constructing_pseudoCode_PParam_default Param_SubstF) cons_paramlocal)
               @^ (AtMember_Form (Constructing_default_pseudoCode F) cons_paramlocal cons_form))

| ViewedFunctor1_default :
forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense10_FormParam_E
  (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense10_FormParam_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),

forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense10_FormParam_F
  (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense10_FormParam_F)
  (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
forall (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
forall Sense10_Form_ff (Form_ff : pseudoCode Sense10_Form_ff) (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )),

forall Sense00_Param_EF' (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF'),
forall Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E,
forall Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F,
forall (PParam_EF' : pseudoCode_PParam Sense1_Param_proj_ff' Sense1_Param_subst_ff'),
forall (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF' )),

forall Sense1_Param_reparam_EF
  (reparam_EF : 'CoMod_$( PParam_EF  ~> PParam_EF' @_ Sense1_Param_reparam_EF) ),

  'CoMod( ViewedFunctor_default E Param_E ~> ViewedFunctor_default F Param_F
                                @_ (ViewedFunctor1_pseudoCode_PParam_default PParam_EF)
                                @^ ViewedFunctor1_default_pseudoCode PParam_EF Form_ff )

| UnitViewedFunctor_default
  : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
      (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
      (Sense10_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense10_FormParam_E)
      (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
      (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Sense10_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense10_FormParam_F)
      (Param_F : obCoMod_Param Sense01_Param_F)
      (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
      (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
      (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Sense10_Form_ff : Sense1_Form_data Sense10_FormParam_E Sense10_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
      (Form_ff : pseudoCode Sense10_Form_ff) (ff : 'CoMod ( E ~> F @_ PParam_EF @^ Form_ff )),

    'CoMod ( E ~> ViewedFunctor_default F Param_F
               @_ (Compos_pseudoCode_PParam (UnitViewedFunctor_pseudoCode_PParam_default' _ ) PParam_EF)
               @^ (Compos_pseudoCode  (UnitViewedFunctor_pseudoCode_PParam_default' _ ) (UnitViewedFunctor_default_pseudoCode' _ ) PParam_EF Form_ff) )

| Destructing_default :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

  forall (Sense00_Param_K : obGenerator -> Type)
(Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
(Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
    Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
(Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
(PParam_ee_ : pseudoCode_PParam_Family Sense1_Param_ee_morphism)

(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)

(Sense00_Param_KE__ : obGenerator -> Type)
(Sense01_Param_KE__ : Sense01_Param_data Sense00_Param_KE__)
(Sense1_Param_proj_ee'__ : Sense1_Param_data Sense01_Param_KE__ Sense01_Param_K)
(Sense1_Param_subst_ee'__ : Sense1_Param_data Sense01_Param_KE__ Sense01_Param_E)
(PParam_ee'__ : pseudoCode_PParam Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__)

(Sense00_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    obGenerator -> Type)
(Sense01_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense01_Param_data (Sense00_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subst0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                       (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal ))

(Sense1_Param_reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__ (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal))
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__ (Sense1_Param_ee_ G paramlocal))
      (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal)
                          ~> PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))

(Sense00_Form_K : obGenerator -> Type)
(Sense01_Form_K : Sense01_data Sense00_Form_K)
(Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)

(Sense1_Form_ee__ :
   forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
     Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K
                       (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                       (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
(Sense1_Form_ee_morphism : Morphism_Form_prop Sense1_Form_ee__)
(Form_ee__ : pseudoCode_Family Sense1_Form_ee_morphism)

(Sense00_Form_E : obGenerator -> Type)
(Sense01_Form_E : Sense01_data Sense00_Form_E)
(Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)

(Sense1_Form_ee'__ : Sense1_Form_data Sense1_FormParam_K Sense1_FormParam_E Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__)
(Form_ee'__ : pseudoCode Sense1_Form_ee'__ )

(Sense00_Param_SubstF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), obGenerator -> Type)
(Sense01_Param_SubstF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), Sense01_Param_data (Sense00_Param_SubstF0__ G param cons_paramlocal form cons_form))
(Sense1_Param_subst0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubstF0__ G param cons_paramlocal form cons_form) (Sense01_Param_View (Parameter0 G)))
(Sense1_Param_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubstF0__ G param cons_paramlocal form cons_form) Sense01_Param_E)
(PParam_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    pseudoCode_PParam (Sense1_Param_subst0__ G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form) )
(Sense1_Form_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_E
                      (Sense1_Param_subst0__  G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form))
(Form_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
pseudoCode (Sense1_Form_ee0__ G param cons_paramlocal form cons_form))
(ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod( View G ~> E @_ (PParam_ee0__ G param cons_paramlocal form cons_form) @^ (Form_ee0__ G param cons_paramlocal form cons_form))),

forall (Sense1_Param_reparam_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
      reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__
                                                               (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                                                               (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__
                                                                (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Param_subst0__ G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form))
(reparam_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal) ~> PParam_ee0__ G param cons_paramlocal form cons_form @_ (Sense1_Param_reparam_ee__ G param cons_paramlocal form cons_form)))
(Congr_congr_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Congr_data (Sense1_Form_Compos (Sense1_Form_ee'__) (Sense1_Form_ee__ G param form)) (Sense1_Form_ee0__ G param cons_paramlocal form cons_form) (Sense1_Param_reparam_ee__ G param cons_paramlocal form cons_form))
(congr_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod$( Compos_pseudoCode PParam_ee'__ Form_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal) (AtMember_Form Form_ee__ cons_paramlocal cons_form) ~> (Form_ee0__ G param cons_paramlocal form cons_form) @_ Congr_congr_ee__ G param cons_paramlocal form cons_form ) ),

  'CoMod( ViewingFunctorSumSubst_default F ~> ViewedFunctor_default E Param_E
      @_ (Compos_pseudoCode_PParam (ViewedFunctor1_pseudoCode_PParam_default PParam_ee'__) (Destructing_pseudoCode_PParam_default' Param_SubstF  PParam_ee_))
      @^ (Compos_pseudoCode (ViewedFunctor1_pseudoCode_PParam_default PParam_ee'__)
                               (ViewedFunctor1_default_pseudoCode PParam_ee'__ Form_ee'__)
                               (Destructing_pseudoCode_PParam_default' Param_SubstF  PParam_ee_)
                               (Destructing_default_pseudoCode' F PParam_ee_ Form_ee__)) )

| Forget :
 forall (Sense00_Form_F : obGenerator -> Type)
   (Sense01_Form_F : Sense01_data Sense00_Form_F)
   (Sense00_Param_F : obGenerator -> Type)
   (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
   (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
   (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

 forall (Sense00_Param_PiSubstF : obGenerator -> Type)
   (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
   (Param_PiSubstF : @obCoMod_Param Sense00_Param_PiSubstF Sense01_Param_PiSubstF),

 forall (Sense00_Param_SubstF : obGenerator -> Type)
   (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
   (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
   (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF)
   (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst),

 forall (Sense00_Param_SubstF' : obGenerator -> Type)
   (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
   (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF)
   (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
   (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
   (param_forget' : 'CoMod__( Param_PiSubstF ~> Param_F @_ PParam_SubstF' )),

 forall (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst
                                               Sense1_Param_proj' Sense1_Param_subst')
   (reparam_forget' : 'CoMod_$( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )),

 forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E)
   (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
   (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense1_FormParam_E)
   (Sense00_Param_FE : obGenerator -> Type)
   (Sense01_Param_FE : Sense01_Param_data Sense00_Param_FE)
   (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_F)
   (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_E)
   (PParam_FE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee) Sense1_Form_ee
   (Form_ee : pseudoCode Sense1_Form_ee)
   (ee : 'CoMod( F ~> E @_  PParam_FE @^ Form_ee )),

   'CoMod( PiSubst F Param_F Param_PiSubstF PParam_SubstF ~> E
                   @_ (Compos_pseudoCode_PParam PParam_FE PParam_SubstF)
                   @^ (Compos_pseudoCode PParam_FE Form_ee PParam_SubstF (Forget_pseudoCode _ PParam_SubstF ) ) )

| Remember :
 forall (Sense00_Form_F : obGenerator -> Type)
   (Sense01_Form_F : Sense01_data Sense00_Form_F)
   (Sense00_Param_F : obGenerator -> Type)
   (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
   (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
   (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

 forall (Sense00_Param_PiSubstF : obGenerator -> Type)
   (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
   (Param_PiSubstF : @obCoMod_Param Sense00_Param_PiSubstF Sense01_Param_PiSubstF),

 forall (Sense00_Param_SubstF : obGenerator -> Type)
   (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
   (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
   (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF)
   (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst),

 forall (Sense00_Param_SubstF' : obGenerator -> Type)
   (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
   (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF)
   (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
   (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
   (param_forget' : 'CoMod__( Param_PiSubstF ~> Param_F @_ PParam_SubstF' ) ),

 forall (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst
                                               Sense1_Param_proj' Sense1_Param_subst')
   (reparam_forget' : 'CoMod_$( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )),

 forall (Sense00_Form_L : obGenerator -> Type)
   (Sense01_Form_L : Sense01_data Sense00_Form_L)
   (Sense00_Param_L : obGenerator -> Type)
   (Sense01_Param_L : Sense01_Param_data Sense00_Param_L)
   (Sense1_FormParam_L : Sense1_FormParam_data Sense01_Form_L Sense01_Param_L)
   (L : @obCoMod Sense00_Form_L Sense01_Form_L Sense00_Param_L Sense01_Param_L Sense1_FormParam_L)
   (Sense00_Param_LF : obGenerator -> Type)
   (Sense01_Param_LF : Sense01_Param_data Sense00_Param_LF)
   (Sense1_Param_subst_ll : Sense1_Param_data Sense01_Param_LF Sense01_Param_F)
   (Sense1_Param_proj_ll : Sense1_Param_data Sense01_Param_LF Sense01_Param_L)
   (PParam_LF : pseudoCode_PParam Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (Sense1_Form_ll : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_F Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (Form_ll : pseudoCode Sense1_Form_ll)
   (ll : 'CoMod( L ~> F @_ PParam_LF @^ Form_ll )),

 forall (Sense00_Param_LPiSubstF : obGenerator -> Type)
   (Sense01_Param_LPiSubstF : Sense01_Param_data Sense00_Param_LPiSubstF)
   (Sense1_Param_LPiSubstF_subst : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_PiSubstF)
   (Sense1_Param_LPiSubstF_proj : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_L)
   (PParam_LPiSubstF : pseudoCode_PParam Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst),
 forall (Sense00_Form_LF : obGenerator -> Type)
   (Sense01_Form_LF : Sense01_data Sense00_Form_LF)
   (Sense1_FormParam_LF : Sense1_FormParam_data Sense01_Form_LF Sense01_Param_PiSubstF)
   (Sense1_Form_ll' : Sense1_Form_data Sense1_FormParam_LF Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
   (Form_ll' : pseudoCode Sense1_Form_ll')
   (Sense1_Form_ll_ : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_LF Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst)
   (Form_ll_ : pseudoCode Sense1_Form_ll_),

 forall (Sense1_Param_reparam_remember : reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst)
                                             (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj Sense1_Param_subst Sense1_Param_LPiSubstF_subst) Sense1_Param_proj_ll Sense1_Param_subst_ll)
   (reparam_remember : 'CoMod_$( (Compos_pseudoCode_PParam PParam_SubstF PParam_LPiSubstF)
                                   ~> PParam_LF @_ Sense1_Param_reparam_remember ) ),
 forall (Congr_congr_ll : Congr_data (Sense1_Form_Compos Sense1_Form_ll' Sense1_Form_ll_) Sense1_Form_ll Sense1_Param_reparam_remember)
   (congr_ll : 'CoMod$( (Compos_pseudoCode PParam_SubstF Form_ll' PParam_LPiSubstF Form_ll_) ~> Form_ll @_ Congr_congr_ll ) ),

   'CoMod( L ~> PiSubst F Param_F Param_PiSubstF PParam_SubstF
             @_ (Compos_pseudoCode_PParam (Unit_pseudoCode_PParam _) PParam_LPiSubstF )
             @^ (Compos_pseudoCode (Unit_pseudoCode_PParam _) (Remember_pseudoCode PParam_SubstF Form_ll') PParam_LPiSubstF Form_ll_ ) )

where "''CoMod' ( E ~> F @_ PParam_EF @^ Form_ff )" :=
        (@morCoMod _ _ _ _ _ E _ _ _ _ _ F  _ _ _ _ PParam_EF _ Form_ff) : sol_scope

with morCoMod_PParam : forall Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
 forall Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
   (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
   (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
   (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff), Type :=

| Unit_PParam : forall Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
    'CoMod__( Param_F ~> Param_F @_ Unit_pseudoCode_PParam Sense01_Param_F )

| ViewMor_PParam :
 forall (Q : obParametrizator) (G : obGenerator) (p : 'Parametrizator(  Parameter0 G ~> Q (** | Q_Viewing ... only the viewing elements*) )) (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (pp : viewingDefault_Constructel_Param p cons_inFibre_P),
      'CoMod__( View_Param P ~> View_Param Q @_ (ViewMor_pseudoCode_PParam pp) )

| Constructing_PParam_default :
 forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),

 forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
   (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
   (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),

    'CoMod__( View_Param P ~> ViewingFunctor_Param_default Param_SubstF
                   @_ (AtMember_PParam (Constructing_pseudoCode_PParam_default Param_SubstF ) cons_paramlocal ))

| ViewedFunctor1_PParam_default : forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
    forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
      (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
  (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
  (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
  (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
  (param_ff : 'CoMod__( Param_E ~> Param_F  @_ PParam_EF )),

  'CoMod__( ViewedFunctor_Param_default Param_E ~> ViewedFunctor_Param_default Param_F  @_ ViewedFunctor1_pseudoCode_PParam_default PParam_EF )

| UnitViewedFunctor_PParam_default :
forall Sense00_Param_E (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
forall Sense00_Param_F (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
  (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),

forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
  (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
  (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
  (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
  (param_ff : 'CoMod__( Param_E ~> Param_F  @_ PParam_EF )),

  'CoMod__( Param_E ~> ViewedFunctor_Param_default Param_F  @_ (Compos_pseudoCode_PParam (UnitViewedFunctor_pseudoCode_PParam_default' _ ) PParam_EF) )

| Destructing_PParam_default :
 forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),

forall (Sense00_Param_K : obGenerator -> Type)
  (Sense01_Param_K : Sense01_Param_data Sense00_Param_K),

forall (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
      Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
  (Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
  (PParam_ee_ :  pseudoCode_PParam_Family Sense1_Param_ee_morphism),

forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),

forall (Sense00_Param_ee'__ : obGenerator -> Type) (Sense01_Param_ee'__ : Sense01_Param_data Sense00_Param_ee'__)
  (Sense1_Param_proj_ee'__ : Sense1_Param_data Sense01_Param_ee'__ Sense01_Param_K) (Sense1_Param_subst_ee'__ : Sense1_Param_data Sense01_Param_ee'__ Sense01_Param_E)
  (PParam_ee'__ : pseudoCode_PParam Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__),

forall (Sense00_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), obGenerator -> Type)
(Sense01_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), Sense01_Param_data (Sense00_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subst0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                    (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal )),

forall (Sense1_Param_reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__
                                                 (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal))
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__
                                                  (Sense1_Param_ee_ G paramlocal))
      (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal)
                          ~> PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))),

  'CoMod__( ViewingFunctor_Param_default Param_SubstF ~> ViewedFunctor_Param_default Param_E
      @_ (Compos_pseudoCode_PParam (ViewedFunctor1_pseudoCode_PParam_default PParam_ee'__) (Destructing_pseudoCode_PParam_default' Param_SubstF PParam_ee_)) )

| Formatting : (**MEMO: contrast this to comprehension-categry / category-with-family / natural-model ,
 where the representability conditions relates type-theory style (terms are section morphism) as-corresponding-to
 locally-catesian-closed style (arrows are morphism over one object) ,
now here section morphism (from terminal) is generalized/polymorph as morphism from any shape object ,
and morphism over one object is generalized/polymorph as morphism parametrized over any span morphism *)
forall (Sense00_Form_E : obGenerator -> Type)
(Sense01_Form_E : Sense01_data Sense00_Form_E)
(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)
(Sense00_Form_F : obGenerator -> Type)
(Sense01_Form_F : Sense01_data Sense00_Form_F)
(Sense00_Param_F : obGenerator -> Type)
(Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
(Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
(F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)

(Sense00_Param_EF : obGenerator -> Type)
(Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
(Sense1_Param_proj : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
(Sense1_Param_subst : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
(PParam_EF : pseudoCode_PParam  Sense1_Param_proj Sense1_Param_subst)

(Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
(Form_ff : pseudoCode Sense1_Form_ff)
(ff : 'CoMod( E ~> F @_  PParam_EF @^ Form_ff ))

(Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)
(Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F)

(Sense00_Param_EF' : obGenerator -> Type)
(Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF')
(Sense1_Param_proj' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
(Sense1_Param_subst' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F)
(PParam_EF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
(param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF' ))

(Sense1_Param_reparam_EF : reparamCongr Sense1_Param_proj Sense1_Param_subst Sense1_Param_proj' Sense1_Param_subst')
(reparam_EF :  'CoMod_$( PParam_EF ~> PParam_EF' @_ Sense1_Param_reparam_EF ))

(Sense00_Param_D : obGenerator -> Type)
(Sense01_Param_D : Sense01_Param_data Sense00_Param_D)
(Param_D : obCoMod_Param Sense01_Param_D)
(Sense00_Param_DE : obGenerator -> Type)
(Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
(Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D)
(Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
(PParam_DE : pseudoCode_PParam  Sense1_Param_proj_ee Sense1_Param_subst_ee)
(param_ee : 'CoMod__( Param_D ~> Param_E @_ PParam_DE )),

  'CoMod__( Param_D ~> Format F Param_F @_ (Compos_pseudoCode_PParam (Formatting_pseudoCode_PParam' PParam_EF Form_ff) PParam_DE) )

where "''CoMod__' (  Param_E  ~>  Param_F  @_ PParam_EF )" :=
        (@morCoMod_PParam _ _ Param_E _ _ Param_F _ _ _ _ PParam_EF ) : sol_scope .

End Section1.

Module Export Ex_Notations.
Declare Scope sol_scope. Delimit Scope sol_scope with sol.

Notation "''CoMod' ( E ~> F @_ PParam_EF @^ Form_ff )" :=
  (@morCoMod _ _ _ _ _ E _ _ _ _ _ F  _ _ _ _ PParam_EF _ Form_ff) : sol_scope .

Notation "''CoMod__' (  Param_E  ~>  Param_F  @_ PParam_EF )" :=
    (@morCoMod_PParam _ _ Param_E _ _ Param_F _ _ _ _ PParam_EF ) : sol_scope .

End Ex_Notations.

Fixpoint toCompos Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
         (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)
         Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
         (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F)
         Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
         (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
         (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
         (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
         (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
         (Form_ff : pseudoCode Sense1_Form_ff)
         (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )%sol) {struct ff} : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )%poly
with toCompos_PParam Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)
                    Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F)
                    Sense00_Param_EF  (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
                    (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
                    (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
                    (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
                    (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF )%sol) {struct param_ff} : 'CoMod__( Param_E ~> Param_F @_ PParam_EF )%poly .
Proof.
{ case : Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E E Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F F  Sense00_Param_EF Sense01_Param_EF  Sense1_Param_proj_ff Sense1_Param_subst_ff PParam_EF Sense1_Form_ff Form_ff / ff.
  - (** Unit *) intros.
    exact: (PPARAMETRIZATION.Unit _).
  - (** ViewMor *)  intros.
    exact: (PPARAMETRIZATION.ViewMor _).
  - (** Constructing_default *) intros.
    exact: (PPARAMETRIZATION.Constructing_default _ _ ).
  - (** ViewedFunctor1_default *) intros.
    exact: (PPARAMETRIZATION.ViewedFunctor1_default (toCompos _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff) (toCompos_PParam _ _ _ _ _ _ _ _ _ _ _ param_ff) reparam_EF) .
  - (**  UnitViewedFunctor_default *) intros.
    exact: (PPARAMETRIZATION.UnitViewedFunctor_default Param_F (toCompos _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff)) .
  - (** Destructing_default *) intros.
    exact (PPARAMETRIZATION.Destructing_default
             (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
                (toCompos_PParam _ _ _ _ _ _ _ _ _ _ _ (param_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))
             reparam_ee_
             (fun G param cons_paramlocal form cons_form =>
                (toCompos _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (ee__ G param cons_paramlocal form cons_form)))
             reparam_ee__ congr_ee__ ).
  - (** Forget *) intros.
    exact: (PPARAMETRIZATION.Forget (toCompos_PParam _ _ _ _ _ _ _ _ _ _ _ param_forget') reparam_forget' (toCompos _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ee)) .
  - (** Remember *) intros.
    exact: (PPARAMETRIZATION.Remember (toCompos_PParam _ _ _ _ _ _ _ _ _ _ _ param_forget') reparam_forget' (toCompos _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ll) reparam_remember ) . }
{ case : Sense00_Param_E Sense01_Param_E Param_E Sense00_Param_F Sense01_Param_F Param_F Sense00_Param_EF Sense01_Param_EF Sense1_Param_proj_ff Sense1_Param_subst_ff PParam_EF / param_ff.
  - (** Unit_PParam *) intros.
    exact: (PPARAMETRIZATION.Unit_PParam _).
  - (** ViewMor_PParam *) intros.
    exact: (PPARAMETRIZATION.ViewMor_PParam _).
  - (** Constructing_PParam_default *) intros.
    exact: (PPARAMETRIZATION.Constructing_PParam_default _).
  - (** ViewedFunctor1_PParam_default *) intros.
    exact: (PPARAMETRIZATION.ViewedFunctor1_PParam_default (toCompos_PParam _ _ _ _ _ _ _ _ _ _ _ param_ff)).
  - (** UnitViewedFunctor_PParam_default *) intros.
    exact: (PPARAMETRIZATION.UnitViewedFunctor_PParam_default (toCompos_PParam _ _ _ _ _ _ _ _ _ _ _ param_ff)).
  - (** Destructing_PParam_default *) intros.
    exact (PPARAMETRIZATION.Destructing_PParam_default
             (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
                (toCompos_PParam _ _ _ _ _ _ _ _ _ _ _ (param_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))) reparam_ee_).
  - (** Formatting *) intros.
    exact: (PPARAMETRIZATION.Formatting  (toCompos _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff) (toCompos_PParam _ _ _ _ _ _ _ _ _ _ _ param_ff) reparam_EF
                                        (toCompos_PParam _ _ _ _ _ _ _ _ _ _ _ param_ee)) . }
Defined.

Arguments toCompos : simpl nomatch.
Arguments toCompos_PParam : simpl nomatch.
(** # #
#+END_SRC

** Cases-refinement of morphisms with inner-instantiation of codomain object-indexes

#+BEGIN_SRC coq :exports both :results silent # # **)
Module TOOL. (**TODO: TOOL , DON'T ERASE **)
Axiom morCoMod : forall T, forall t: T, Type.
Lemma morCoMod_codomP
  : forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
 (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E),
 forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
   (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E),
 forall Sense1_Param_subst_ff (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
   Sense1_Form_ff (Form_ff : pseudoCode Sense1_Form_ff) (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )%sol), morCoMod ff.
Proof.
  intros. destruct F.
  admit.
  admit.
  admit.
  admit. Undo 5.
  intros. destruct ff.
  destruct F.
  admit.
  admit.
  admit.
  admit.
  admit.
  admit.
  admit.
  admit.
  admit.
  destruct E.
  admit.
  admit.
  admit.
  admit.
  admit.
Abort All.
End TOOL.

Module MorCoMod_codomView.
Inductive morCoMod : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense1_FormParam_E) (G : obGenerator) (Sense00_Param_EF : obGenerator -> Type)
           (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF (Sense01_Param_View (Parameter0 G))) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E (Sense1_FormParam_View G) Sense1_Param_proj_ff Sense1_Param_subst_ff) (Form_ff : pseudoCode Sense1_Form_ff)
           (ff : 'CoMod ( E ~> View G @_ PParam_EF @^ Form_ff )%sol), Type :=
| Unit:
    forall G : obGenerator, morCoMod (Unit (View G))
| ViewMor:
    forall (G H : obGenerator) (g : 'Generator( G ~> H )) (gg : viewingDefault_Constructel_Param_Form g), morCoMod (ViewMor gg)
| Forget:
       forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
              (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense1_FormParam_F) (Param_F : obCoMod_Param Sense01_Param_F)
              (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF) (Param_PiSubstF : obCoMod_Param Sense01_Param_PiSubstF)
              (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
              (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF) (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst)
              (Sense00_Param_SubstF' : obGenerator -> Type) (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
              (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF) (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
              (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst') (param_forget' : 'CoMod__ ( Param_PiSubstF ~> Param_F @_ PParam_SubstF' )%sol)
              (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst Sense1_Param_proj' Sense1_Param_subst')
              (reparam_forget' : 'CoMod_$ ( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )) (G : obGenerator) (Sense00_Param_FE : obGenerator -> Type)
              (Sense01_Param_FE : Sense01_Param_data Sense00_Param_FE) (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_F)
              (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_FE (Sense01_Param_View (Parameter0 G))) (PParam_FE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee)
              (Sense1_Form_ee : Sense1_Form_data Sense1_FormParam_F (Sense1_FormParam_View G) Sense1_Param_proj_ee Sense1_Param_subst_ee) (Form_ee : pseudoCode Sense1_Form_ee)
              (ff : 'CoMod ( F ~> View G @_ PParam_FE @^ Form_ee )%sol), morCoMod (Forget param_forget' reparam_forget' ff)
.
End MorCoMod_codomView.

Module MorCoMod_codomViewingFunctorSumSubst_default.
Inductive morCoMod : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense1_FormParam_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
           (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
           (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF) (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
           (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF) (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
           (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF (Sense01_Param_SumImage Sense1_Param_subst))
           (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E (Sense1_FormParam_SumSubst Sense1_FormParam_F Sense1_Param_subst Sense1_Param_proj) Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (Form_ff : pseudoCode Sense1_Form_ff) (ff : 'CoMod ( E ~> ViewingFunctorSumSubst_default F @_ PParam_EF @^ Form_ff )%sol), Type :=
|  Unit:
      forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
           (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F) (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
           (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF) (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
           (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),
        morCoMod (Unit (ViewingFunctorSumSubst_default F))
| Constructing_default:
forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
           (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F) (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
           (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF) (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
           (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF) (G : obGenerator) (param : Sense00_Param_SubstF G)
           (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) InFibre_Unit) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
           (cons_form : constructel_Form F form), morCoMod (Constructing_default cons_paramlocal cons_form)
|  Forget:
forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense1_FormParam_F) (Param_F : obCoMod_Param Sense01_Param_F)
           (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF) (Param_PiSubstF : obCoMod_Param Sense01_Param_PiSubstF)
           (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
           (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF) (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst)
           (Sense00_Param_SubstF' : obGenerator -> Type) (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
           (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF) (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
           (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst') (param_forget' : 'CoMod__ ( Param_PiSubstF ~> Param_F @_ PParam_SubstF' )%sol)
           (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst Sense1_Param_proj' Sense1_Param_subst')
           (reparam_forget' : 'CoMod_$ ( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )) (Sense00_Form_F0 : obGenerator -> Type) (Sense01_Form_F0 : Sense01_data Sense00_Form_F0)
           (Sense00_Param_F0 : obGenerator -> Type) (Sense01_Param_F0 : Sense01_Param_data Sense00_Param_F0) (Sense1_FormParam_F0 : Sense1_FormParam_data Sense01_Form_F0 Sense01_Param_F0)
           (Sense00_Param_SubstF0 : obGenerator -> Type) (Sense01_Param_SubstF0 : Sense01_Param_data Sense00_Param_SubstF0) (Sense1_Param_proj0 : Sense1_Param_data Sense01_Param_SubstF0 Sense01_Param_F0)
           (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
           (Sense1_Param_subst0 : Sense1_Param_data Sense01_Param_SubstF0 Sense01_Param_SumSubstF) (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst0)
           (F0 : obCoMod_Data Sense1_FormParam_F0 Sense1_Param_proj0 Param_SubstF) (Sense00_Param_FE : obGenerator -> Type) (Sense01_Param_FE : Sense01_Param_data Sense00_Param_FE)
           (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_F) (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_FE (Sense01_Param_SumImage Sense1_Param_subst0))
           (PParam_FE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee)
           (Sense1_Form_ee : Sense1_Form_data Sense1_FormParam_F (Sense1_FormParam_SumSubst Sense1_FormParam_F0 Sense1_Param_subst0 Sense1_Param_proj0) Sense1_Param_proj_ee Sense1_Param_subst_ee)
           (Form_ee : pseudoCode Sense1_Form_ee) (ff : 'CoMod ( F ~> ViewingFunctorSumSubst_default F0 @_ PParam_FE @^ Form_ee )%sol), morCoMod (Forget param_forget' reparam_forget' ff)
.
End MorCoMod_codomViewingFunctorSumSubst_default.

Module MorCoMod_codomViewedFunctor_default.
Inductive morCoMod : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense1_FormParam_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (F : obCoMod Sense1_FormParam_F) (Param_F : obCoMod_Param Sense01_Param_F) (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
           (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
           (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff) (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (Form_ff : pseudoCode Sense1_Form_ff) (ff : 'CoMod ( E ~> ViewedFunctor_default F Param_F @_ PParam_EF @^ Form_ff )%sol), Type :=
| Unit:
      forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
             (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense1_FormParam_F) (Param_F : obCoMod_Param Sense01_Param_F),
        morCoMod (Unit (ViewedFunctor_default F Param_F))
| ViewedFunctor1_default:
      forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
             (Sense10_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense10_FormParam_E) (Param_E : obCoMod_Param Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type)
             (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
             (Sense10_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense10_FormParam_F) (Param_F : obCoMod_Param Sense01_Param_F) (Sense00_Param_EF : obGenerator -> Type)
             (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
             (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
             (Sense10_Form_ff : Sense1_Form_data Sense10_FormParam_E Sense10_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff) (Form_ff : pseudoCode Sense10_Form_ff)
             (ff : 'CoMod ( E ~> F @_ PParam_EF @^ Form_ff )%sol) (Sense00_Param_EF' : obGenerator -> Type) (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF')
             (Sense1_Param_proj_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E) (Sense1_Param_subst_ff' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F)
             (PParam_EF' : pseudoCode_PParam Sense1_Param_proj_ff' Sense1_Param_subst_ff') (param_ff : 'CoMod__ ( Param_E ~> Param_F @_ PParam_EF' )%sol)
             (Sense1_Param_reparam_EF : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ff' Sense1_Param_subst_ff')
             (reparam_EF : 'CoMod_$ ( PParam_EF ~> PParam_EF' @_ Sense1_Param_reparam_EF )), morCoMod (ViewedFunctor1_default ff param_ff reparam_EF)
| UnitViewedFunctor_default:
      forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
             (Sense10_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense10_FormParam_E) (Sense00_Form_F : obGenerator -> Type)
             (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
             (Sense10_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense10_FormParam_F) (Param_F : obCoMod_Param Sense01_Param_F) (Sense00_Param_EF : obGenerator -> Type)
             (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
             (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
             (Sense10_Form_ff : Sense1_Form_data Sense10_FormParam_E Sense10_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff) (Form_ff : pseudoCode Sense10_Form_ff)
             (ff : 'CoMod ( E ~> F @_ PParam_EF @^ Form_ff )%sol), morCoMod (UnitViewedFunctor_default Param_F ff)

| Destructing_default :
forall (Sense00_Form_F : obGenerator -> Type)
    (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type)
    (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
    (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst)
    (F : obCoMod_Data Sense1_FormParam_F Sense1_Param_proj Param_SubstF),

  forall (Sense00_Param_K : obGenerator -> Type)
(Sense01_Param_K : Sense01_Param_data Sense00_Param_K)
(Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
    Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
(Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
(PParam_ee_ : pseudoCode_PParam_Family Sense1_Param_ee_morphism)

(Sense00_Param_E : obGenerator -> Type)
(Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
(Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E)

(Sense00_Param_KE__ : obGenerator -> Type)
(Sense01_Param_KE__ : Sense01_Param_data Sense00_Param_KE__)
(Sense1_Param_proj_ee'__ : Sense1_Param_data Sense01_Param_KE__ Sense01_Param_K)
(Sense1_Param_subst_ee'__ : Sense1_Param_data Sense01_Param_KE__ Sense01_Param_E)
(PParam_ee'__ : pseudoCode_PParam Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__)

(Sense00_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    obGenerator -> Type)
(Sense01_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense01_Param_data (Sense00_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subst0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                       (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal )%sol)

(Sense1_Param_reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__ (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal))
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__ (Sense1_Param_ee_ G paramlocal))
      (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal)
                          ~> PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))

(Sense00_Form_K : obGenerator -> Type)
(Sense01_Form_K : Sense01_data Sense00_Form_K)
(Sense1_FormParam_K : Sense1_FormParam_data Sense01_Form_K Sense01_Param_K)

(Sense1_Form_ee__ :
   forall (G : obGenerator) (param : Sense00_Param_SubstF G) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param),
     Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_K
                       (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                       (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
(Sense1_Form_ee_morphism : Morphism_Form_prop Sense1_Form_ee__)
(Form_ee__ : pseudoCode_Family Sense1_Form_ee_morphism)

(Sense00_Form_E : obGenerator -> Type)
(Sense01_Form_E : Sense01_data Sense00_Form_E)
(Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E)
(E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E)

(Sense1_Form_ee'__ : Sense1_Form_data Sense1_FormParam_K Sense1_FormParam_E Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__)
(Form_ee'__ : pseudoCode Sense1_Form_ee'__ )

(Sense00_Param_SubstF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), obGenerator -> Type)
(Sense01_Param_SubstF0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ), Sense01_Param_data (Sense00_Param_SubstF0__ G param cons_paramlocal form cons_form))
(Sense1_Param_subst0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubstF0__ G param cons_paramlocal form cons_form) (Sense01_Param_View (Parameter0 G)))
(Sense1_Param_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Param_data (Sense01_Param_SubstF0__ G param cons_paramlocal form cons_form) Sense01_Param_E)
(PParam_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    pseudoCode_PParam (Sense1_Param_subst0__ G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form) )
(Sense1_Form_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Sense1_Form_data (Sense1_FormParam_View G) Sense1_FormParam_E
                      (Sense1_Param_subst0__  G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form))
(Form_ee0__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
pseudoCode (Sense1_Form_ee0__ G param cons_paramlocal form cons_form))
(ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod( View G ~> E @_ (PParam_ee0__ G param cons_paramlocal form cons_form) @^ (Form_ee0__ G param cons_paramlocal form cons_form))%sol),

forall (Sense1_Param_reparam_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
      reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__
                                                               (Sense1_LocalParam_proj Sense1_Param_subst (sval Sense1_Param_subst G param) (InFibre G))
                                                               (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__
                                                                (Sense1_Param_ee_ G (sval Sense1_Param_subst G param)))
                    (Sense1_Param_subst0__ G param cons_paramlocal form cons_form) (Sense1_Param_ee0__ G param cons_paramlocal form cons_form))
(reparam_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal) ~> PParam_ee0__ G param cons_paramlocal form cons_form @_ (Sense1_Param_reparam_ee__ G param cons_paramlocal form cons_form)))
(Congr_congr_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    Congr_data (Sense1_Form_Compos (Sense1_Form_ee'__) (Sense1_Form_ee__ G param form)) (Sense1_Form_ee0__ G param cons_paramlocal form cons_form) (Sense1_Param_reparam_ee__ G param cons_paramlocal form cons_form))
(congr_ee__ : forall (G : obGenerator) (param : Sense00_Param_SubstF G)
          (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) (Unit_inFibreDefault_Constructel_Param G))
          (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param)
          (cons_form : constructel_Form F  form ),
    'CoMod$( Compos_pseudoCode PParam_ee'__ Form_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal) (AtMember_Form Form_ee__ cons_paramlocal cons_form) ~> (Form_ee0__ G param cons_paramlocal form cons_form) @_ Congr_congr_ee__ G param cons_paramlocal form cons_form ) ),
    morCoMod (Destructing_default param_ee_ reparam_ee_ ee__ reparam_ee__ congr_ee__)

|  Forget:
       forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
              (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense1_FormParam_F) (Param_F : obCoMod_Param Sense01_Param_F)
              (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF) (Param_PiSubstF : obCoMod_Param Sense01_Param_PiSubstF)
              (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
              (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF) (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst)
              (Sense00_Param_SubstF' : obGenerator -> Type) (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
              (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF) (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
              (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst') (param_forget' : 'CoMod__ ( Param_PiSubstF ~> Param_F @_ PParam_SubstF' )%sol)
              (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst Sense1_Param_proj' Sense1_Param_subst')
              (reparam_forget' : 'CoMod_$ ( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )) (Sense00_Form_F0 : obGenerator -> Type) (Sense01_Form_F0 : Sense01_data Sense00_Form_F0)
              (Sense00_Param_F0 : obGenerator -> Type) (Sense01_Param_F0 : Sense01_Param_data Sense00_Param_F0) (Sense1_FormParam_F0 : Sense1_FormParam_data Sense01_Form_F0 Sense01_Param_F0)
              (E : obCoMod Sense1_FormParam_F0) (Param_F0 : obCoMod_Param Sense01_Param_F0) (Sense00_Param_FE : obGenerator -> Type) (Sense01_Param_FE : Sense01_Param_data Sense00_Param_FE)
              (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_F) (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_F0)
              (PParam_FE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee) (Sense1_Form_ee : Sense1_Form_data Sense1_FormParam_F Sense1_FormParam_F0 Sense1_Param_proj_ee Sense1_Param_subst_ee)
              (Form_ee : pseudoCode Sense1_Form_ee) (ff : 'CoMod ( F ~> ViewedFunctor_default E Param_F0 @_ PParam_FE @^ Form_ee )%sol), morCoMod (Forget param_forget' reparam_forget' ff)
.
End MorCoMod_codomViewedFunctor_default.

Module MorCoMod_codomPiSubst.
Inductive morCoMod : forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
                                             (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense1_FormParam_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
                                             (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
                                             (F : obCoMod Sense1_FormParam_F) (Param_F : obCoMod_Param Sense01_Param_F) (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF)
                                             (Param_PiSubstF : obCoMod_Param Sense01_Param_PiSubstF) (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
                                             (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F) (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF)
                                             (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst) (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
                                             (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_PiSubstF)
                                             (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
                                             (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E (Sense1_FormParam_PiSubst Sense1_FormParam_F Sense1_Param_subst Sense1_Param_proj) Sense1_Param_proj_ff Sense1_Param_subst_ff)
                                             (Form_ff : pseudoCode Sense1_Form_ff) (ff : 'CoMod ( E ~> PiSubst F Param_F Param_PiSubstF PParam_SubstF @_ PParam_EF @^ Form_ff )%sol), Type :=
|  Unit:
      forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
             (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense1_FormParam_F) (Param_F : obCoMod_Param Sense01_Param_F)
             (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF) (Param_PiSubstF : obCoMod_Param Sense01_Param_PiSubstF)
             (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
             (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF) (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst),
        morCoMod (Unit (PiSubst F Param_F Param_PiSubstF PParam_SubstF))
|  Forget:
       forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
              (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense1_FormParam_F) (Param_F : obCoMod_Param Sense01_Param_F)
              (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF) (Param_PiSubstF : obCoMod_Param Sense01_Param_PiSubstF)
              (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
              (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF) (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst)
              (Sense00_Param_SubstF' : obGenerator -> Type) (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
              (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF) (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
              (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst') (param_forget' : 'CoMod__ ( Param_PiSubstF ~> Param_F @_ PParam_SubstF' )%sol)
              (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst Sense1_Param_proj' Sense1_Param_subst')
              (reparam_forget' : 'CoMod_$ ( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )) (Sense00_Form_F0 : obGenerator -> Type) (Sense01_Form_F0 : Sense01_data Sense00_Form_F0)
              (Sense00_Param_F0 : obGenerator -> Type) (Sense01_Param_F0 : Sense01_Param_data Sense00_Param_F0) (Sense1_FormParam_F0 : Sense1_FormParam_data Sense01_Form_F0 Sense01_Param_F0)
              (E : obCoMod Sense1_FormParam_F0) (Param_F0 : obCoMod_Param Sense01_Param_F0) (Sense00_Param_PiSubstF0 : obGenerator -> Type) (Sense01_Param_PiSubstF0 : Sense01_Param_data Sense00_Param_PiSubstF0)
              (Param_PiSubstF0 : obCoMod_Param Sense01_Param_PiSubstF0) (Sense00_Param_SubstF0 : obGenerator -> Type) (Sense01_Param_SubstF0 : Sense01_Param_data Sense00_Param_SubstF0)
              (Sense1_Param_subst0 : Sense1_Param_data Sense01_Param_SubstF0 Sense01_Param_F0) (Sense1_Param_proj0 : Sense1_Param_data Sense01_Param_SubstF0 Sense01_Param_PiSubstF0)
              (PParam_SubstF0 : pseudoCode_PParam Sense1_Param_proj0 Sense1_Param_subst0) (Sense00_Param_FE : obGenerator -> Type) (Sense01_Param_FE : Sense01_Param_data Sense00_Param_FE)
              (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_F) (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_FE Sense01_Param_PiSubstF0)
              (PParam_FE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee)
              (Sense1_Form_ee : Sense1_Form_data Sense1_FormParam_F (Sense1_FormParam_PiSubst Sense1_FormParam_F0 Sense1_Param_subst0 Sense1_Param_proj0) Sense1_Param_proj_ee Sense1_Param_subst_ee)
              (Form_ee : pseudoCode Sense1_Form_ee) (ff : 'CoMod ( F ~> PiSubst E Param_F0 Param_PiSubstF0 PParam_SubstF0 @_ PParam_FE @^ Form_ee )%sol), morCoMod (Forget param_forget' reparam_forget' ff)

| Remember :
 forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
        (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense1_FormParam_F) (Param_F : obCoMod_Param Sense01_Param_F)
        (Sense00_Param_PiSubstF : obGenerator -> Type) (Sense01_Param_PiSubstF : Sense01_Param_data Sense00_Param_PiSubstF) (Param_PiSubstF : obCoMod_Param Sense01_Param_PiSubstF)
        (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_F)
        (Sense1_Param_proj : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_PiSubstF) (PParam_SubstF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst)
        (Sense00_Param_SubstF' : obGenerator -> Type) (Sense01_Param_SubstF' : Sense01_Param_data Sense00_Param_SubstF')
        (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_PiSubstF) (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_SubstF' Sense01_Param_F)
        (PParam_SubstF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst') (param_forget' : 'CoMod__ ( Param_PiSubstF ~> Param_F @_ PParam_SubstF' )%sol)
        (Sense1_Param_reparam_forget' : reparamCongr Sense1_Param_proj Sense1_Param_subst Sense1_Param_proj' Sense1_Param_subst')
        (reparam_forget' : 'CoMod_$ ( PParam_SubstF ~> PParam_SubstF' @_ Sense1_Param_reparam_forget' )) (Sense00_Form_L : obGenerator -> Type) (Sense01_Form_L : Sense01_data Sense00_Form_L)
        (Sense00_Param_L : obGenerator -> Type) (Sense01_Param_L : Sense01_Param_data Sense00_Param_L) (Sense1_FormParam_L : Sense1_FormParam_data Sense01_Form_L Sense01_Param_L)
        (L : obCoMod Sense1_FormParam_L) (Sense00_Param_LF : obGenerator -> Type) (Sense01_Param_LF : Sense01_Param_data Sense00_Param_LF)
        (Sense1_Param_subst_ll : Sense1_Param_data Sense01_Param_LF Sense01_Param_F) (Sense1_Param_proj_ll : Sense1_Param_data Sense01_Param_LF Sense01_Param_L)
        (PParam_LF : pseudoCode_PParam Sense1_Param_proj_ll Sense1_Param_subst_ll) (Sense1_Form_ll : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_F Sense1_Param_proj_ll Sense1_Param_subst_ll)
        (Form_ll : pseudoCode Sense1_Form_ll) (ff : 'CoMod ( L ~> F @_ PParam_LF @^ Form_ll )%sol) (Sense00_Param_LPiSubstF : obGenerator -> Type)
        (Sense01_Param_LPiSubstF : Sense01_Param_data Sense00_Param_LPiSubstF) (Sense1_Param_LPiSubstF_subst : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_PiSubstF)
        (Sense1_Param_LPiSubstF_proj : Sense1_Param_data Sense01_Param_LPiSubstF Sense01_Param_L) (PParam_LPiSubstF : pseudoCode_PParam Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst)
        (Sense00_Form_LF : obGenerator -> Type) (Sense01_Form_LF : Sense01_data Sense00_Form_LF) (Sense1_FormParam_LF : Sense1_FormParam_data Sense01_Form_LF Sense01_Param_PiSubstF)
        (Sense1_Form_ll' : Sense1_Form_data Sense1_FormParam_LF Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst) (Form_ll' : pseudoCode Sense1_Form_ll')
        (Sense1_Form_ll_ : Sense1_Form_data Sense1_FormParam_L Sense1_FormParam_LF Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst) (Form_ll_ : pseudoCode Sense1_Form_ll_)
        (Sense1_Param_reparam_remember : reparamCongr (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj Sense1_Param_LPiSubstF_proj Sense1_Param_LPiSubstF_subst)
                                                        (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj Sense1_Param_subst Sense1_Param_LPiSubstF_subst) Sense1_Param_proj_ll Sense1_Param_subst_ll)
        (reparam_remember : 'CoMod_$ ( Compos_pseudoCode_PParam PParam_SubstF PParam_LPiSubstF ~> PParam_LF @_ Sense1_Param_reparam_remember ))
        (Congr_congr_ll : Congr_data (Sense1_Form_Compos Sense1_Form_ll' Sense1_Form_ll_) Sense1_Form_ll Sense1_Param_reparam_remember)
        (congr_ll : 'CoMod$ ( Compos_pseudoCode PParam_SubstF Form_ll' PParam_LPiSubstF Form_ll_ ~> Form_ll @_ Congr_congr_ll )),
   morCoMod (Remember param_forget' reparam_forget' ff reparam_remember congr_ll)
.
End MorCoMod_codomPiSubst.

Lemma morCoMod_codomP
  : forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
 (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E),
 forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
   (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E),
 forall Sense1_Param_subst_ff (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
   Sense1_Form_ff (Form_ff : pseudoCode Sense1_Form_ff) (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )%sol),
   ltac:( destruct F; [ refine (MorCoMod_codomView.morCoMod ff)
                      | refine (MorCoMod_codomViewingFunctorSumSubst_default.morCoMod ff)
                      | refine (MorCoMod_codomViewedFunctor_default.morCoMod ff)
                      | refine (MorCoMod_codomPiSubst.morCoMod ff) ] ).
Proof.
  intros. destruct ff.
  - destruct F.
    apply: MorCoMod_codomView.Unit.
    apply: MorCoMod_codomViewingFunctorSumSubst_default.Unit.
    apply: MorCoMod_codomViewedFunctor_default.Unit.
    apply: MorCoMod_codomPiSubst.Unit.
  - apply: MorCoMod_codomView.ViewMor.
  - apply: MorCoMod_codomViewingFunctorSumSubst_default.Constructing_default.
  - apply: MorCoMod_codomViewedFunctor_default.ViewedFunctor1_default.
  - apply: MorCoMod_codomViewedFunctor_default.UnitViewedFunctor_default.
  - apply: MorCoMod_codomViewedFunctor_default.Destructing_default.
  - destruct E.
    apply: MorCoMod_codomView.Forget.
    apply: MorCoMod_codomViewingFunctorSumSubst_default.Forget.
    apply: MorCoMod_codomViewedFunctor_default.Forget.
    apply: MorCoMod_codomPiSubst.Forget.
  - apply: MorCoMod_codomPiSubst.Remember.
Defined.

Module TOOLR. (**TODO: TOOLR , DON'T ERASE **)
Axiom morCoMod_PParam : forall T, forall t: T, Type.
Lemma morCoMod_PParam_codomP
  : forall Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
 forall Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
 forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
 forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
 forall (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF )%sol), morCoMod_PParam param_ff.
Proof.
  intros. destruct Param_F.
  admit.
  admit.
  admit.
  admit. Undo 6.
  intros. destruct param_ff.
  destruct Param_F.
  admit.
  admit.
  admit.
  admit.

  admit.
  admit.
  admit.
  admit.
  admit.
  admit.
Abort All.
End TOOLR.

Module MorCoMod_codomView_Param.
Inductive morCoMod_PParam : forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Param_E : obCoMod_Param Sense01_Param_E) (P : obParametrizator)
           (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF (Sense01_Param_View P)) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (param_ff : 'CoMod__ ( Param_E ~> View_Param P @_ PParam_EF )%sol), Type :=
| Unit_PParam:
  forall P : obParametrizator, morCoMod_PParam (Unit_PParam (View_Param P))
| ViewMor_PParam:
forall (Q : obParametrizator) (G : obGenerator) (p : 'Parametrizator ( Parameter0 G ~> Q )) (P : obParametrizator) (inFibre_P : inFibre G P)
           (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P) (pp : viewingDefault_Constructel_Param p cons_inFibre_P), morCoMod_PParam (ViewMor_PParam pp).

End MorCoMod_codomView_Param.

Module MorCoMod_codomViewingFunctor_Param_default.
Inductive morCoMod_PParam : forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Param_E : obCoMod_Param Sense01_Param_E) (Sense00_Param_SubstF : obGenerator -> Type)
           (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense00_Param_SumSubstF : obGenerator -> Type) (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
           (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF) (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst) (Sense00_Param_EF : obGenerator -> Type)
           (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF (Sense01_Param_SumImage Sense1_Param_subst)) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
           (param_ff : 'CoMod__ ( Param_E ~> ViewingFunctor_Param_default Param_SubstF @_ PParam_EF )%sol), Type :=

| Unit_PParam:
forall (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense00_Param_SumSubstF : obGenerator -> Type)
           (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
           (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst), morCoMod_PParam (Unit_PParam (ViewingFunctor_Param_default Param_SubstF))
| Constructing_PParam_default :
forall (Sense00_Param_SubstF : obGenerator -> Type) (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF) (Sense00_Param_SumSubstF : obGenerator -> Type)
           (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
           (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst) (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G) (P : obParametrizator) (inFibre_P : inFibre G P)
           (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P) (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P),
  morCoMod_PParam (Constructing_PParam_default cons_paramlocal)
.
End MorCoMod_codomViewingFunctor_Param_default.

Module MorCoMod_codomViewedFunctor_Param_default.
Inductive morCoMod_PParam : forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Param_E : obCoMod_Param Sense01_Param_E) (Sense00_Param_F : obGenerator -> Type)
           (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Param_F : obCoMod_Param Sense01_Param_F) (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
           (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
           (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff) (param_ff : 'CoMod__ ( Param_E ~> ViewedFunctor_Param_default Param_F @_ PParam_EF )%sol), Type :=

| Unit_PParam:
forall (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Param_F : obCoMod_Param Sense01_Param_F),
  morCoMod_PParam (Unit_PParam (ViewedFunctor_Param_default Param_F))

| ViewedFunctor1_PParam_default:
forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Param_E : obCoMod_Param Sense01_Param_E) (Sense00_Param_F : obGenerator -> Type)
           (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Param_F : obCoMod_Param Sense01_Param_F) (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
           (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
           (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff) (param_ff : 'CoMod__ ( Param_E ~> Param_F @_ PParam_EF )%sol), morCoMod_PParam (ViewedFunctor1_PParam_default param_ff)

| UnitViewedFunctor_PParam_default :
forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Param_E : obCoMod_Param Sense01_Param_E) (Sense00_Param_F : obGenerator -> Type)
           (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Param_F : obCoMod_Param Sense01_Param_F) (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
           (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
           (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff) (param_ff : 'CoMod__ ( Param_E ~> Param_F @_ PParam_EF )%sol),
      morCoMod_PParam (UnitViewedFunctor_PParam_default param_ff)

| Destructing_PParam_default :
 forall (Sense00_Param_SubstF : obGenerator -> Type)
    (Sense01_Param_SubstF : Sense01_Param_data Sense00_Param_SubstF)
    (Sense00_Param_SumSubstF : obGenerator -> Type)
    (Sense01_Param_SumSubstF : Sense01_Param_data Sense00_Param_SumSubstF)
    (Sense1_Param_subst : Sense1_Param_data Sense01_Param_SubstF Sense01_Param_SumSubstF)
    (Param_SubstF : obCoMod_Param_Data Sense1_Param_subst),

forall (Sense00_Param_K : obGenerator -> Type)
  (Sense01_Param_K : Sense01_Param_data Sense00_Param_K),

forall (Sense1_Param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G),
      Sense1_Param_data (Sense01_LocalParam_ Sense1_Param_subst paramlocal) Sense01_Param_K)
  (Sense1_Param_ee_morphism : Morphism_prop Sense1_Param_ee_)
  (PParam_ee_ :  pseudoCode_PParam_Family Sense1_Param_ee_morphism),

forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
  (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),

forall (Sense00_Param_ee'__ : obGenerator -> Type) (Sense01_Param_ee'__ : Sense01_Param_data Sense00_Param_ee'__)
  (Sense1_Param_proj_ee'__ : Sense1_Param_data Sense01_Param_ee'__ Sense01_Param_K) (Sense1_Param_subst_ee'__ : Sense1_Param_data Sense01_Param_ee'__ Sense01_Param_E)
  (PParam_ee'__ : pseudoCode_PParam Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__),

forall (Sense00_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), obGenerator -> Type)
(Sense01_Param_SubstF0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ), Sense01_Param_data (Sense00_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))
(Sense1_Param_subst0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense01_Param_View P))
(Sense1_Param_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    Sense1_Param_data (Sense01_Param_SubstF0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) Sense01_Param_E)
(PParam_ee0_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    pseudoCode_PParam (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                    (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(param_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod__( View_Param P ~> Param_E @_ PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal )%sol),

forall (Sense1_Param_reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    reparamCongr
      (Sense1_Compos_pseudoCode_PParam_proj Sense1_Param_proj_ee'__
                                                 (Sense1_LocalParam_proj Sense1_Param_subst paramlocal inFibre_P) (Sense1_Param_ee_ G paramlocal))
      (Sense1_Compos_pseudoCode_PParam_subst Sense1_Param_proj_ee'__ Sense1_Param_subst_ee'__
                                                  (Sense1_Param_ee_ G paramlocal))
      (Sense1_Param_subst0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
(reparam_ee_ : forall (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G)
               (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P)
               (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P ),
    'CoMod_$( Compos_pseudoCode_PParam PParam_ee'__ (AtMember_PParam PParam_ee_ cons_paramlocal)
                          ~> PParam_ee0_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal @_ (Sense1_Param_reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))),
 morCoMod_PParam (Destructing_PParam_default param_ee_ reparam_ee_)
.
End MorCoMod_codomViewedFunctor_Param_default.

Module MorCoMod_codomFormat.
Inductive morCoMod_PParam : forall (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Param_E : obCoMod_Param Sense01_Param_E) (Sense00_Form_F : obGenerator -> Type)
           (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense1_FormParam_F) (Param_F : obCoMod_Param Sense01_Param_F) (Sense00_Param_EF : obGenerator -> Type)
           (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
           (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF (Sense01_Param_Format (Sense1_Param_of_Sense1_FormParam Sense1_FormParam_F) (Sense1_Param_Id Sense01_Param_F)))
           (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff) (param_ff : 'CoMod__ ( Param_E ~> Format F Param_F @_ PParam_EF )%sol), Type :=

| Unit_PParam:
forall (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F) (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F)
           (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F) (F : obCoMod Sense1_FormParam_F) (Param_F : obCoMod_Param Sense01_Param_F),
  morCoMod_PParam (Unit_PParam (Format F Param_F))

| Formatting :
forall (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
           (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense1_FormParam_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
           (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
           (F : obCoMod Sense1_FormParam_F) (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
           (Sense1_Param_proj : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
           (PParam_EF : pseudoCode_PParam Sense1_Param_proj Sense1_Param_subst) (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj Sense1_Param_subst)
           (Form_ff : pseudoCode Sense1_Form_ff) (ff : 'CoMod ( E ~> F @_ PParam_EF @^ Form_ff )%sol) (Param_E : obCoMod_Param Sense01_Param_E) (Param_F : obCoMod_Param Sense01_Param_F)
           (Sense00_Param_EF' : obGenerator -> Type) (Sense01_Param_EF' : Sense01_Param_data Sense00_Param_EF') (Sense1_Param_proj' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_E)
           (Sense1_Param_subst' : Sense1_Param_data Sense01_Param_EF' Sense01_Param_F) (PParam_EF' : pseudoCode_PParam Sense1_Param_proj' Sense1_Param_subst')
           (param_ff1 : 'CoMod__ ( Param_E ~> Param_F @_ PParam_EF' )%sol) (Sense00_Param_D : obGenerator -> Type)
           (Sense1_Param_reparam_EF : reparamCongr Sense1_Param_proj Sense1_Param_subst Sense1_Param_proj' Sense1_Param_subst')
           (reparam_EF : 'CoMod_$ ( PParam_EF ~> PParam_EF' @_ Sense1_Param_reparam_EF ))
           (Sense01_Param_D : Sense01_Param_data Sense00_Param_D) (Param_D : obCoMod_Param Sense01_Param_D) (Sense00_Param_DE : obGenerator -> Type) (Sense01_Param_DE : Sense01_Param_data Sense00_Param_DE)
           (Sense1_Param_proj_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_D) (Sense1_Param_subst_ee : Sense1_Param_data Sense01_Param_DE Sense01_Param_E)
           (PParam_DE : pseudoCode_PParam Sense1_Param_proj_ee Sense1_Param_subst_ee) (param_ff2 : 'CoMod__ ( Param_D ~> Param_E @_ PParam_DE )%sol),
      morCoMod_PParam (Formatting ff param_ff1 reparam_EF param_ff2)
.
End MorCoMod_codomFormat.

Lemma morCoMod_PParam_codomP
  : forall Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
 forall Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
 forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF),
 forall Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E,
 forall Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F,
 forall (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
 forall (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF )%sol),
   ltac:( destruct Param_F; [ refine (MorCoMod_codomView_Param.morCoMod_PParam param_ff)
                      | refine (MorCoMod_codomViewingFunctor_Param_default.morCoMod_PParam param_ff)
                      | refine (MorCoMod_codomViewedFunctor_Param_default.morCoMod_PParam param_ff)
                      | refine (MorCoMod_codomFormat.morCoMod_PParam param_ff) ] ).
Proof.
  intros. destruct param_ff.
  - destruct Param_F.
    apply: MorCoMod_codomView_Param.Unit_PParam.
    apply: MorCoMod_codomViewingFunctor_Param_default.Unit_PParam.
    apply: MorCoMod_codomViewedFunctor_Param_default.Unit_PParam.
    apply: MorCoMod_codomFormat.Unit_PParam.
  - apply: MorCoMod_codomView_Param.ViewMor_PParam.
  - apply: MorCoMod_codomViewingFunctor_Param_default.Constructing_PParam_default.
  - apply: MorCoMod_codomViewedFunctor_Param_default.ViewedFunctor1_PParam_default.
  - apply: MorCoMod_codomViewedFunctor_Param_default.UnitViewedFunctor_PParam_default.
  - apply: MorCoMod_codomViewedFunctor_Param_default.Destructing_PParam_default.
  - apply: MorCoMod_codomFormat.Formatting.
Defined.
End Sol.
(** # #
#+END_SRC

* Composition/cut-elimination into polymorphic soiution by computational/total/asymptotic/reduction/(multi-step) resolution using conversions

#+BEGIN_SRC coq :exports both :results silent # # **)
Module Resolve.
Export Sol.Ex_Notations.

Ltac tac_simpl := simpl.
Ltac tac_reduce := tac_simpl; repeat (intro; tac_simpl); intuition eauto 9.

Module SR.
Section solveCoMod_return.
  Variables (Sense00_Form_E : obGenerator -> Type) (Sense01_Form_E : Sense01_data Sense00_Form_E) (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E)
    (Sense1_FormParam_E : Sense1_FormParam_data Sense01_Form_E Sense01_Param_E) (E : obCoMod Sense1_FormParam_E) (Sense00_Form_F : obGenerator -> Type) (Sense01_Form_F : Sense01_data Sense00_Form_F)
    (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Sense1_FormParam_F : Sense1_FormParam_data Sense01_Form_F Sense01_Param_F)
    (F : obCoMod Sense1_FormParam_F) (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
    (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E) (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
    (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff) (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
    (Form_ff : pseudoCode Sense1_Form_ff) (ff : 'CoMod ( E ~> F @_ PParam_EF @^ Form_ff )).

(**MEMO; use Record , else cost of nested projections : 1 projT2 = 0.1 sec , 2 projT2 = 2 sec , 3 projT2 56sec , where 12 projT2 required *)
Record solveCoMod_return : Type :=
  {Sense00_Param_EFSol : obGenerator -> Type ;
  Sense01_Param_EFSol : Sense01_Param_data Sense00_Param_EFSol ;
  Sense1_Param_proj_ffSol : Sense1_Param_data Sense01_Param_EFSol Sense01_Param_E ;
  Sense1_Param_subst_ffSol : Sense1_Param_data Sense01_Param_EFSol Sense01_Param_F ;
  PParam_EFSol : pseudoCode_PParam Sense1_Param_proj_ffSol Sense1_Param_subst_ffSol ;
  Sense1_Form_ffSol : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ffSol Sense1_Param_subst_ffSol ;
  Form_ffSol : pseudoCode Sense1_Form_ffSol ;
  ffSol : 'CoMod ( E ~> F @_ PParam_EFSol @^ Form_ffSol )%sol ;
  Sense1_Param_reparam_EFSol : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ffSol Sense1_Param_subst_ffSol ;
  reparam_EFSol : 'CoMod_$ ( PParam_EF ~> PParam_EFSol @_ Sense1_Param_reparam_EFSol ) ;
  Congr_congr_ffSol : Congr_data Sense1_Form_ff Sense1_Form_ffSol Sense1_Param_reparam_EFSol ;
  congr_ffSol : 'CoMod$ ( Form_ff ~> Form_ffSol @_ Congr_congr_ffSol ) ;
  conv_ffSol : (Sol.toCompos ffSol) [ reparam_EFSol @^ congr_ffSol ]<~~ ff } .

End solveCoMod_return.
End SR.

Module SRR.
Section solveCoMod_PParam_return.
  Variables (Sense00_Param_E : obGenerator -> Type) (Sense01_Param_E : Sense01_Param_data Sense00_Param_E) (Param_E : obCoMod_Param Sense01_Param_E)
            (Sense00_Param_F : obGenerator -> Type) (Sense01_Param_F : Sense01_Param_data Sense00_Param_F) (Param_F : obCoMod_Param Sense01_Param_F)
            (Sense00_Param_EF : obGenerator -> Type) (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF) (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
            (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F) (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff)
            (param_ff : 'CoMod__ ( Param_E ~> Param_F @_ PParam_EF )).

  Record solveCoMod_PParam_return : Type :=
    {Sense00_Param_EFSol : obGenerator -> Type ;
     Sense01_Param_EFSol : Sense01_Param_data Sense00_Param_EFSol ;
     Sense1_Param_proj_ffSol : Sense1_Param_data Sense01_Param_EFSol Sense01_Param_E ;
     Sense1_Param_subst_ffSol : Sense1_Param_data Sense01_Param_EFSol Sense01_Param_F ;
     PParam_EFSol : pseudoCode_PParam Sense1_Param_proj_ffSol Sense1_Param_subst_ffSol ;
     param_ffSol : 'CoMod__ ( Param_E ~> Param_F @_ PParam_EFSol )%sol ;
     Sense1_Param_reparam_EFSol : reparamCongr Sense1_Param_proj_ff Sense1_Param_subst_ff Sense1_Param_proj_ffSol Sense1_Param_subst_ffSol ;
     reparam_EFSol : 'CoMod_$ ( PParam_EF ~> PParam_EFSol @_ Sense1_Param_reparam_EFSol ) ;
     conv_param_ffSol : (Sol.toCompos_PParam param_ffSol) [ reparam_EFSol ]<~~__ param_ff }.

End solveCoMod_PParam_return.
End SRR.

Ltac tac_SR solveCoMod len ff blurb :=
  move: (SR.Sense00_Param_EFSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb))
          (SR.Sense01_Param_EFSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb))
          (SR.Sense1_Param_proj_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb))
          (SR.Sense1_Param_subst_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb))
          (SR.PParam_EFSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb))
          (SR.Sense1_Form_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb))
          (SR.Form_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb))
          (SR.ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb))
          (SR.Sense1_Param_reparam_EFSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb))
          (SR.reparam_EFSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb))
          (SR.Congr_congr_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb))
          (SR.congr_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb)).

Ltac tac_SRR solveCoMod_PParam len param_ff blurbp :=
  move: (SRR.Sense00_Param_EFSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff blurbp))
          (SRR.Sense01_Param_EFSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff blurbp))
          (SRR.Sense1_Param_proj_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff blurbp))
          (SRR.Sense1_Param_subst_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff blurbp))
          (SRR.PParam_EFSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff blurbp))
          (SRR.param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff blurbp))
          (SRR.Sense1_Param_reparam_EFSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff blurbp))
          (SRR.reparam_EFSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff blurbp)).

  Ltac tac_SR_Family solveCoMod len ff__ blurb_ :=
  have @Sense00_Param_EF_ffSol := (fun G param cons_paramlocal form cons_form => (SR.Sense00_Param_EFSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (ff__ G param cons_paramlocal form cons_form) (blurb_ G param cons_paramlocal form cons_form))));
  have @Sense01_Param_EF_ffSol : forall G param cons_paramlocal form cons_form, Sense01_Param_data (Sense00_Param_EF_ffSol G param cons_paramlocal form cons_form) :=
    (fun G param cons_paramlocal form cons_form => (SR.Sense01_Param_EFSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (ff__ G param cons_paramlocal form cons_form) (blurb_ G param cons_paramlocal form cons_form))));
  have @Sense1_Param_proj_ffSol : forall G param cons_paramlocal form cons_form, Sense1_Param_data (Sense01_Param_EF_ffSol G param cons_paramlocal form cons_form) _
    := (fun G param cons_paramlocal form cons_form => (SR.Sense1_Param_proj_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (ff__ G param cons_paramlocal form cons_form) (blurb_ G param cons_paramlocal form cons_form))));
  have @Sense1_Param_subst_ffSol : forall G param cons_paramlocal form cons_form, Sense1_Param_data (Sense01_Param_EF_ffSol G param cons_paramlocal form cons_form) _
    := (fun G param cons_paramlocal form cons_form => (SR.Sense1_Param_subst_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (ff__ G param cons_paramlocal form cons_form) (blurb_ G param cons_paramlocal form cons_form))));
  have @PParam_EF_ffSol : forall G param cons_paramlocal form cons_form, pseudoCode_PParam (Sense1_Param_proj_ffSol G param cons_paramlocal form cons_form) (Sense1_Param_subst_ffSol G param cons_paramlocal form cons_form)
    := (fun G param cons_paramlocal form cons_form => (SR.PParam_EFSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (ff__ G param cons_paramlocal form cons_form) (blurb_ G param cons_paramlocal form cons_form))));
  have @Sense1_Form_ffSol : forall G param cons_paramlocal form cons_form, Sense1_Form_data _ _ (Sense1_Param_proj_ffSol G param cons_paramlocal form cons_form) (Sense1_Param_subst_ffSol G param cons_paramlocal form cons_form)
    := (fun G param cons_paramlocal form cons_form => (SR.Sense1_Form_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (ff__ G param cons_paramlocal form cons_form) (blurb_ G param cons_paramlocal form cons_form))));
  have @Form_ffSol : forall G param cons_paramlocal form cons_form, pseudoCode (Sense1_Form_ffSol G param cons_paramlocal form cons_form)
    := (fun G param cons_paramlocal form cons_form => (SR.Form_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (ff__ G param cons_paramlocal form cons_form) (blurb_ G param cons_paramlocal form cons_form))));
  have @ffSol : forall G param cons_paramlocal form cons_form, 'CoMod ( _ ~> _ @_ (PParam_EF_ffSol G param cons_paramlocal form cons_form) @^ (Form_ffSol G param cons_paramlocal form cons_form) )%sol
    := (fun G param cons_paramlocal form cons_form => (SR.ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (ff__ G param cons_paramlocal form cons_form) (blurb_ G param cons_paramlocal form cons_form))));
  have @Sense1_Param_reparam_EF_ffSol : forall G param cons_paramlocal form cons_form, reparamCongr _ _ (Sense1_Param_proj_ffSol G param cons_paramlocal form cons_form) (Sense1_Param_subst_ffSol G param cons_paramlocal form cons_form)
    := (fun G param cons_paramlocal form cons_form => (SR.Sense1_Param_reparam_EFSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (ff__ G param cons_paramlocal form cons_form) (blurb_ G param cons_paramlocal form cons_form))));
  have @reparam_EF_ffSol : forall G param cons_paramlocal form cons_form, 'CoMod_$ ( _ ~> (PParam_EF_ffSol G param cons_paramlocal form cons_form) @_ (Sense1_Param_reparam_EF_ffSol G param cons_paramlocal form cons_form) )
    := (fun G param cons_paramlocal form cons_form => (SR.reparam_EFSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (ff__ G param cons_paramlocal form cons_form) (blurb_ G param cons_paramlocal form cons_form))));
  have @Congr_congr_ffSol : forall G param cons_paramlocal form cons_form, Congr_data _ (Sense1_Form_ffSol G param cons_paramlocal form cons_form) (Sense1_Param_reparam_EF_ffSol G param cons_paramlocal form cons_form)
    := (fun G param cons_paramlocal form cons_form => (SR.Congr_congr_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (ff__ G param cons_paramlocal form cons_form) (blurb_ G param cons_paramlocal form cons_form))));
  have @congr_ffSol : forall G param cons_paramlocal form cons_form, 'CoMod$ ( _ ~> (Form_ffSol G param cons_paramlocal form cons_form) @_ (Congr_congr_ffSol G param cons_paramlocal form cons_form) )
    := (fun G param cons_paramlocal form cons_form => (SR.congr_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ (ff__ G param cons_paramlocal form cons_form) (blurb_ G param cons_paramlocal form cons_form))));
  intros conv_ffSol;
  have {conv_ffSol} : forall G param cons_paramlocal form cons_form, (Sol.toCompos (ffSol G param cons_paramlocal form cons_form)) [ (reparam_EF_ffSol G param cons_paramlocal form cons_form) @^ (congr_ffSol G param cons_paramlocal form cons_form) ]<~~ _
    := conv_ffSol.

  Ltac tac_SRR_Family solveCoMod_PParam len param_ff_ blurbp_ :=
  have @Sense00_Param_EF_param_ffSol  : forall G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal, obGenerator -> Type
    := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal => (SRR.Sense00_Param_EFSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ (param_ff_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (blurbp_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))));
  have @Sense01_Param_EF_param_ffSol  : forall G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal, Sense01_Param_data (Sense00_Param_EF_param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
    := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal => (SRR.Sense01_Param_EFSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ (param_ff_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (blurbp_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))));
  have @Sense1_Param_proj_param_ffSol  : forall G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal, Sense1_Param_data (Sense01_Param_EF_param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) _
    := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal => (SRR.Sense1_Param_proj_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ (param_ff_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (blurbp_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))));
  have @Sense1_Param_subst_param_ffSol  : forall G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal, Sense1_Param_data (Sense01_Param_EF_param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) _
    := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal => (SRR.Sense1_Param_subst_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ (param_ff_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (blurbp_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))));
  have @PParam_EF_param_ffSol  : forall G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal, pseudoCode_PParam (Sense1_Param_proj_param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_subst_param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
    := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal => (SRR.PParam_EFSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ (param_ff_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (blurbp_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))));
  have @param_ffSol  : forall G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal, 'CoMod__ ( _ ~> _ @_ (PParam_EF_param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )%sol
    := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal => (SRR.param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ (param_ff_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (blurbp_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))));
  have @Sense1_Param_reparam_EF_param_ffSol  : forall G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal, reparamCongr  _ _ (Sense1_Param_proj_param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (Sense1_Param_subst_param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
    := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal => (SRR.Sense1_Param_reparam_EFSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ (param_ff_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (blurbp_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))));
  have @reparam_EF_param_ffSol  : forall G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal, 'CoMod_$ ( _ ~> (PParam_EF_param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) @_ (Sense1_Param_reparam_EF_param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) )
    := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal => (SRR.reparam_EFSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ (param_ff_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) (blurbp_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))));
  intros conv_param_ffSol;
  have {conv_param_ffSol} : forall G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal, (Sol.toCompos_PParam (param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)) [ (reparam_EF_param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) ]<~~__ _
    := conv_param_ffSol.

Fixpoint solveCoMod (len : nat) {struct len} :
 forall Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E
   (E : @obCoMod Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E),
 forall Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F
   (F : @obCoMod Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F),
    forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
      (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
      (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
      (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
    forall (Sense1_Form_ff : Sense1_Form_data Sense1_FormParam_E Sense1_FormParam_F Sense1_Param_proj_ff Sense1_Param_subst_ff)
       (Form_ff : pseudoCode Sense1_Form_ff)
      (ff : 'CoMod( E ~> F @_ PParam_EF @^ Form_ff )),
    forall grade_ff : ( gradeCoMod ff  <= len)%nat,
      SR.solveCoMod_return ff

with solveCoMod_PParam (len : nat) {struct len} :
forall Sense00_Param_E Sense01_Param_E (Param_E : @obCoMod_Param Sense00_Param_E Sense01_Param_E),
forall Sense00_Param_F Sense01_Param_F (Param_F : @obCoMod_Param Sense00_Param_F Sense01_Param_F),
forall Sense00_Param_EF (Sense01_Param_EF : Sense01_Param_data Sense00_Param_EF)
  (Sense1_Param_proj_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_E)
  (Sense1_Param_subst_ff : Sense1_Param_data Sense01_Param_EF Sense01_Param_F)
  (PParam_EF : pseudoCode_PParam Sense1_Param_proj_ff Sense1_Param_subst_ff),
forall (param_ff : 'CoMod__( Param_E ~> Param_F @_ PParam_EF )),
forall grade_ff : ( gradeCoMod_PParam param_ff <= len)%nat,
      SRR.solveCoMod_PParam_return param_ff .
Proof.
{ (** solveCoMod *) case : len => [ | len ].

(** len is O **)
- intros; exfalso;
    by intros; move: grade_ff; clear; abstract tac_degrade.

(** len is (S len) **)
- intros until ff. case : Sense00_Form_E Sense01_Form_E Sense00_Param_E Sense01_Param_E Sense1_FormParam_E E Sense00_Form_F Sense01_Form_F Sense00_Param_F Sense01_Param_F Sense1_FormParam_F F  Sense00_Param_EF Sense01_Param_EF  Sense1_Param_proj_ff Sense1_Param_subst_ff PParam_EF Sense1_Form_ff Form_ff / ff; intros.

(** ff is  (ff o>CoMod ff') *) all: cycle 1.

(** ff is  (UnitMod F) **)
+ eapply SR.Build_solveCoMod_return with (ffSol := ( Sol.Unit F )%sol).
  clear; tac_reduce.

(** ff is  (ViewMor gg)  **)
+ eapply SR.Build_solveCoMod_return with (ffSol := ( Sol.ViewMor gg )%sol).
  clear; tac_reduce.

(** ff is  (Constructing_default cons_paramlocal cons_form) **)
+ eapply SR.Build_solveCoMod_return with (ffSol := ( Sol.Constructing_default cons_paramlocal cons_form )%sol).
  clear; tac_reduce.

(** ff is  (ViewedFunctor1_default ff param_ff reparam_EF) **)
+ have [:blurb] := (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb));
                     first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SR solveCoMod len ff blurb; move =>
  Sense00_Param_EF_ffSol Sense01_Param_EF_ffSol Sense1_Param_proj_ffSol Sense1_Param_subst_ffSol PParam_EF_ffSol Sense1_Form_ffSol
                          Form_ffSol ffSol Sense1_Param_reparam_EF_ffSol reparam_EF_ffSol Congr_congr_ffSol congr_ffSol conv_ffSol .
  have [:blurbp]:= (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff blurbp));
                     first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SRR solveCoMod_PParam len param_ff blurbp; move  =>
  Sense00_Param_EF_param_ffSol Sense01_Param_EF_param_ffSol Sense1_Param_proj_param_ffSol Sense1_Param_subst_param_ffSol
                                PParam_EF_param_ffSol param_ffSol Sense1_Param_reparam_EF_param_ffSol reparam_EF_param_ffSol conv_param_ffSol .
  clear solveCoMod solveCoMod_PParam.

  eapply SR.Build_solveCoMod_return with (ffSol :=
  (Sol.ViewedFunctor1_default ffSol param_ffSol ((Rev_reparam reparam_EF_ffSol) o>_$ (reparam_EF o>_$ reparam_EF_param_ffSol)))%sol).

  move: conv_param_ffSol conv_ffSol; clear; tac_reduce.

(** ff is  (UnitViewedFunctor_default Param_F ff) **)
+ have [:blurb] := (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb));
                     first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SR solveCoMod len ff blurb; move =>
  Sense00_Param_EF_ffSol Sense01_Param_EF_ffSol Sense1_Param_proj_ffSol Sense1_Param_subst_ffSol PParam_EF_ffSol Sense1_Form_ffSol
                          Form_ffSol ffSol Sense1_Param_reparam_EF_ffSol reparam_EF_ffSol Congr_congr_ffSol congr_ffSol conv_ffSol .
  clear solveCoMod solveCoMod_PParam.

  eapply SR.Build_solveCoMod_return with (ffSol :=
  (Sol.UnitViewedFunctor_default Param_F ffSol)%sol).

  move: conv_ffSol; clear; tac_reduce.

(** ff is  (Destructing_default param_ee_ reparam_ee_ ee__ reparam_ee__ congr_ee__) **)
+ Time have [:blurb_] := (fun G param cons_paramlocal form cons_form =>
         (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                                    (ee__ G param cons_paramlocal form cons_form)
                                    (blurb_ G param cons_paramlocal form cons_form))));
                           first by intros; move: grade_ff; clear; abstract tac_degrade. (* 16 secs *)
  tac_SR_Family solveCoMod len ee__ blurb_ ;
    move : Sense00_Param_EF_ffSol Sense01_Param_EF_ffSol Sense1_Param_proj_ffSol Sense1_Param_subst_ffSol PParam_EF_ffSol Sense1_Form_ffSol
                                   Form_ffSol ffSol Sense1_Param_reparam_EF_ffSol reparam_EF_ffSol Congr_congr_ffSol congr_ffSol;
    move => Sense00_Param_EF_ffSol Sense01_Param_EF_ffSol Sense1_Param_proj_ffSol Sense1_Param_subst_ffSol PParam_EF_ffSol Sense1_Form_ffSol
                                   Form_ffSol ffSol Sense1_Param_reparam_EF_ffSol reparam_EF_ffSol Congr_congr_ffSol congr_ffSol conv_ffSol.

  Time have [:blurbp_] := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
         (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _
                                                   (param_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                                                   (blurbp_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))));
                            first by intros; move: grade_ff; clear; abstract tac_degrade. (* 15 secs *)
  tac_SRR_Family solveCoMod_PParam len param_ee_ blurbp_ ;
    move: Sense00_Param_EF_param_ffSol Sense01_Param_EF_param_ffSol Sense1_Param_proj_param_ffSol Sense1_Param_subst_param_ffSol
                                        PParam_EF_param_ffSol param_ffSol Sense1_Param_reparam_EF_param_ffSol reparam_EF_param_ffSol;
    move => Sense00_Param_EF_param_ffSol Sense01_Param_EF_param_ffSol Sense1_Param_proj_param_ffSol Sense1_Param_subst_param_ffSol
                                         PParam_EF_param_ffSol param_ffSol Sense1_Param_reparam_EF_param_ffSol reparam_EF_param_ffSol conv_param_ffSol.
  clear solveCoMod solveCoMod_PParam.

  pose reparam_eeeeSol9_ := (fun (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G) (P : obParametrizator) (inFibre_P : inFibre G P)
                         (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P) (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P) =>
                               Refl_reparam (AtMember_PParam PParam_ee_ cons_paramlocal)).
  pose reparam_eeeeSol9__ := (fun (G : obGenerator) (param : Sense00_Param_SubstF G) (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) InFibre_Unit) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param) (cons_form : constructel_Form F form) =>
                                Refl_reparam (AtMember_PParam PParam_ee_ cons_paramlocal)).
  pose congr_eeeeSol9__ := (fun (G : obGenerator) (param : Sense00_Param_SubstF G) (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) InFibre_Unit) (form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param) (cons_form : constructel_Form F form) =>
                              Refl_congrPseudoCode (AtMember_Form Form_ee__ cons_paramlocal cons_form)).
  pose reparam_ee'eeSol'__ := (Refl_reparam (PParam_ee'__)).
  pose congr_ee'eeSol'__ := (Refl_congrPseudoCode (Form_ee'__)).

  (** HAHA /!\ AMBUSH /!\ ALSO FOR THE SENSE, THE FAMILY MUST BE INDEXED BY CODES ---> SOLVED ! *)
  pose reparam_eeSol_ := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
                            ((Rev_reparam (Compos_pseudoCode_PParam_cong reparam_ee'eeSol'__ (reparam_eeeeSol9_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))
                               o>_$ ((reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) o>_$ (reparam_EF_param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))).
  pose reparam_eeSol__ := (fun G param cons_paramlocal form cons_form => ((Rev_reparam (Compos_pseudoCode_PParam_cong reparam_ee'eeSol'__  (reparam_eeeeSol9__ G param cons_paramlocal form cons_form)))
                                                o>_$ ((reparam_ee__ G param cons_paramlocal form cons_form) o>_$ (reparam_EF_ffSol G param cons_paramlocal form cons_form)))).
  pose congr_eeSol__ := (fun G param cons_paramlocal form cons_form => (Rev_congrPseudoCode (Compos_cong_congrPseudoCode reparam_ee'eeSol'__ congr_ee'eeSol'__ (reparam_eeeeSol9__ G param cons_paramlocal form cons_form) (congr_eeeeSol9__ G param cons_paramlocal form cons_form)))
                                             o>$ ((congr_ee__ G param cons_paramlocal form cons_form) o>$ (congr_ffSol G param cons_paramlocal form cons_form))).

  (** HAHA /!\ AMBUSH2 /!\ ONLY FOR THE (0-LABELLED) SENSES SUPPORTING THE MORPHISMS , THE FAMILY MUST BE INDEXED BY CODES ---> SOLVED ! *)
  eapply SR.Build_solveCoMod_return with (ffSol :=
        ( Sol.Destructing_default param_ffSol reparam_eeSol_
                                 ffSol reparam_eeSol__ congr_eeSol__ )%sol).

  move: conv_param_ffSol conv_ffSol; clear; intros; (*MEMO: no simpl *)
    eapply Destructing_default_cong'''; intuition (try apply Refl_coh_congrPseudoCode_PParam; try apply Refl_coh_congrPseudoCode; eauto).

(** ff is (Forget param_forget' reparam_forget' ee) **)
+ have [:blurb] :=
    (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ee blurb));
      first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SR solveCoMod len ee blurb; move =>
  Sense00_Param_EF_eeSol Sense01_Param_EF_eeSol Sense1_Param_proj_eeSol Sense1_Param_subst_eeSol PParam_EF_eeSol Sense1_Form_eeSol
                          Form_eeSol eeSol Sense1_Param_reparam_EF_eeSol reparam_EF_eeSol Congr_congr_eeSol congr_eeSol conv_eeSol.
  have [:blurbp] :=
    (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_forget' blurbp));
      first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SRR solveCoMod_PParam len param_forget' blurbp; move  =>
  Sense00_Param_EF_param_forget'Sol Sense01_Param_EF_param_forget'Sol Sense1_Param_proj_param_forget'Sol Sense1_Param_subst_param_forget'Sol PParam_EF_param_forget'Sol param_forget'Sol Sense1_Param_reparam_EF_param_forget'Sol reparam_EF_param_forget'Sol conv_param_forget'Sol.
  clear solveCoMod solveCoMod_PParam.

  eapply SR.Build_solveCoMod_return with (ffSol :=
    (Sol.Forget param_forget'Sol (reparam_forget' o>_$ reparam_EF_param_forget'Sol) eeSol)%sol).

  move: conv_param_forget'Sol conv_eeSol; clear; tac_reduce.

(** ff is  (Remember param_forget' reparam_forget' ll reparam_remember congr_ll)  **)
+ have [:blurb] :=
    (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ll blurb));
      first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SR solveCoMod len ll blurb; move =>
  Sense00_Param_EF_llSol Sense01_Param_EF_llSol Sense1_Param_proj_llSol Sense1_Param_subst_llSol PParam_EF_llSol Sense1_Form_llSol Form_llSol llSol Sense1_Param_reparam_EF_llSol reparam_EF_llSol Congr_congr_llSol congr_llSol conv_llSol.
  have [:blurbp] :=
    (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_forget' blurbp));
      first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SRR solveCoMod_PParam len param_forget' blurbp; move =>
  Sense00_Param_EF_param_forget'Sol Sense01_Param_EF_param_forget'Sol Sense1_Param_proj_param_forget'Sol Sense1_Param_subst_param_forget'Sol PParam_EF_param_forget'Sol param_forget'Sol Sense1_Param_reparam_EF_param_forget'Sol reparam_EF_param_forget'Sol conv_param_forget'Sol.
  clear solveCoMod solveCoMod_PParam.

  eapply SR.Build_solveCoMod_return with (ffSol := ( Sol.Remember param_forget'Sol
            ( reparam_forget' o>_$ reparam_EF_param_forget'Sol ) llSol
            ( (Rev_reparam (Compos_pseudoCode_PParam_cong (Refl_reparam _) (Refl_reparam PParam_LPiSubstF)))
                o>_$ (reparam_remember o>_$ reparam_EF_llSol) )
            ( (Rev_congrPseudoCode (Compos_cong_congrPseudoCode (Refl_reparam _) (Refl_congrPseudoCode Form_ll')
                                                                   (Refl_reparam PParam_LPiSubstF) (Refl_congrPseudoCode Form_ll_)))
                o>$ (congr_ll o>$ congr_llSol) ) )%sol).

  move: conv_param_forget'Sol conv_llSol; clear; tac_reduce.

(** ff is (ff_ o>CoMod ff') **)
+ have [:blurb] :=
    (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff' blurb));
      first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SR solveCoMod len ff' blurb; move =>
  Sense00_Param_F'FSol Sense01_Param_F'FSol Sense1_Param_proj_ff'Sol Sense1_Param_subst_ff'Sol PParam_F'FSol Sense1_Form_ff'Sol
                        Form_ff'Sol ff'Sol Sense1_Param_reparam_F'FSol reparam_F'FSol Congr_congr_ff'Sol congr_ff'Sol conv_ff'Sol.
  have [:blurb] :=
     (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff_ blurb));
       first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SR solveCoMod len ff_ blurb; move =>
  Sense00_Param_F''F'Sol Sense01_Param_F''F'Sol Sense1_Param_proj_ff_Sol Sense1_Param_subst_ff_Sol PParam_F''F'Sol Sense1_Form_ff_Sol
                          Form_ff_Sol ff_Sol Sense1_Param_reparam_F''F'Sol reparam_F''F'Sol Congr_congr_ff_Sol congr_ff_Sol conv_ff_Sol.

  (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  **)
  destruct ff'Sol; simpl in conv_ff'Sol; set Sol_toCompos_ff'Sol := (X in X [ _ @^ _ ]<~~ ff' ) in conv_ff'Sol.

  (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
      is (ff_Sol o>CoMod (Sol.Unit F)) **)
  * clear solveCoMod solveCoMod_PParam.
    eapply SR.Build_solveCoMod_return with (ffSol := ( ff_Sol )%sol).
    move: conv_ff_Sol conv_ff'Sol; clear;
      (tac_simpl; intros; eapply convCoMod_Trans with
                              (ff0 := ff_ o>CoMod Sol_toCompos_ff'Sol);
       subst Sol_toCompos_ff'Sol; tac_reduce).

  (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
      is (ff_Sol o>CoMod (Sol.ViewMor gg)) **)
  * move: (Sol.morCoMod_codomP ff_Sol) => ff_Sol_morCoMod_codomP.
    { destruct ff_Sol_morCoMod_codomP;
        simpl in conv_ff_Sol; set Sol_toCompos_ff_Sol := (X in X [ _ @^ _ ]<~~ ff_ ) in conv_ff_Sol.

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.Unit (View G)) o>CoMod (Sol.ViewMor gg)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SR.Build_solveCoMod_return with (ffSol := ( Sol.ViewMor gg )%sol).
        move: conv_ff_Sol conv_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce).

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.ViewMor gg0) o>CoMod (Sol.ViewMor gg)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SR.Build_solveCoMod_return with (ffSol :=
         (Sol.ViewMor (g:= g0 o>Generator g) (viewingDefault_Constructel_Param_Form_action gg gg0))%sol).
        move: conv_ff_Sol conv_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce).

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.Forget param_forget' reparam_forget' ff) o>CoMod (Sol.ViewMor gg)) **)
      - pose Sol_toCompos_ff_Sol_o_ff'Sol := ( Sol.toCompos ff o>CoMod Sol_toCompos_ff'Sol ).
        have [:blurb] :=
          (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_ff_Sol_o_ff'Sol blurb));
            first by intros; move: grade_ff conv_ff_Sol conv_ff'Sol; clear; abstract tac_degrade.
        tac_SR solveCoMod len Sol_toCompos_ff_Sol_o_ff'Sol blurb; move =>
        Sense00_Param_EF_ff_Sol_o_ff'Sol Sense01_Param_EF_ff_Sol_o_ff'Sol Sense1_Param_proj_ff_Sol_o_ff'Sol Sense1_Param_subst_ff_Sol_o_ff'Sol PParam_EF_ff_Sol_o_ff'Sol Sense1_Form_ff_Sol_o_ff'Sol Form_ff_Sol_o_ff'Sol ff_Sol_o_ff'Sol Sense1_Param_reparam_EF_ff_Sol_o_ff'Sol reparam_EF_ff_Sol_o_ff'Sol Congr_congr_ff_Sol_o_ff'Sol congr_ff_Sol_o_ff'Sol conv_ff_Sol_o_ff'Sol.
        clear solveCoMod solveCoMod_PParam.

        eapply SR.Build_solveCoMod_return with (ffSol :=
                ( Sol.Forget param_forget' (reparam_forget' o>_$ (Refl_reparam _) (*/!\ ... *)) ff_Sol_o_ff'Sol )%sol).
        move: conv_ff_Sol conv_ff'Sol conv_ff_Sol_o_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce).
    }

  (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
      is (ff_Sol o>CoMod (Sol.Constructing_default cons_paramlocal cons_form)) **)
  * move: (Sol.morCoMod_codomP ff_Sol) => ff_Sol_morCoMod_codomP.
    { destruct ff_Sol_morCoMod_codomP;
        simpl in conv_ff_Sol; set Sol_toCompos_ff_Sol := (X in X [ _ @^ _ ]<~~ ff_ ) in conv_ff_Sol.

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.Unit (View G)) o>CoMod (Sol.Constructing_default cons_paramlocal cons_form)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SR.Build_solveCoMod_return with (ffSol :=
           (Sol.Constructing_default cons_paramlocal cons_form)%sol).
        move: conv_ff_Sol conv_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce).

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.ViewMor gg) o>CoMod (Sol.Constructing_default cons_paramlocal cons_form)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SR.Build_solveCoMod_return with (ffSol :=
          (Sol.Constructing_default (form := (g o>GeneratorAtParam_ form))
                                ( ( constructel_Param_action cons_paramlocal (viewingDefault_Constructel_Param_of_viewingDefault_Constructel_Param_Form gg) (constructel_Form_action_transp_Heq Sense1_Param_subst param g) ) )
                                ( constructel_Form_action cons_form gg))%sol).
        move: conv_ff_Sol conv_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce).

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.Forget param_forget' reparam_forget' ff) o>CoMod (Sol.Constructing_default cons_paramlocal cons_form)) **)
      - pose Sol_toCompos_ff_Sol_o_ff'Sol := ( Sol.toCompos ff o>CoMod Sol_toCompos_ff'Sol ).
        have [:blurb] :=
          (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_ff_Sol_o_ff'Sol blurb));
            first by intros; move: grade_ff conv_ff_Sol conv_ff'Sol; clear; abstract tac_degrade.
        tac_SR solveCoMod len Sol_toCompos_ff_Sol_o_ff'Sol blurb; move =>
        Sense00_Param_EF_ff_Sol_o_ff'Sol Sense01_Param_EF_ff_Sol_o_ff'Sol Sense1_Param_proj_ff_Sol_o_ff'Sol Sense1_Param_subst_ff_Sol_o_ff'Sol PParam_EF_ff_Sol_o_ff'Sol Sense1_Form_ff_Sol_o_ff'Sol Form_ff_Sol_o_ff'Sol ff_Sol_o_ff'Sol Sense1_Param_reparam_EF_ff_Sol_o_ff'Sol reparam_EF_ff_Sol_o_ff'Sol Congr_congr_ff_Sol_o_ff'Sol congr_ff_Sol_o_ff'Sol conv_ff_Sol_o_ff'Sol.
        clear solveCoMod solveCoMod_PParam.

        eapply SR.Build_solveCoMod_return with (ffSol :=
          (Sol.Forget param_forget' (reparam_forget' o>_$ (Refl_reparam _) (*/!\ ... *)) ff_Sol_o_ff'Sol)%sol).
        move: conv_ff_Sol conv_ff'Sol conv_ff_Sol_o_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce).
    }

  (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
      is (ff_Sol o>CoMod (Sol.ViewedFunctor1_default ff'Sol param_ff reparam_EF)) **)
  * move: (Sol.morCoMod_codomP ff_Sol) => ff_Sol_morCoMod_codomP.
    { destruct ff_Sol_morCoMod_codomP;
        simpl in conv_ff_Sol; set Sol_toCompos_ff_Sol := (X in X [ _ @^ _ ]<~~ ff_ ) in conv_ff_Sol.

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.Unit (ViewedFunctor_default F0 Param_F0)) o>CoMod (Sol.ViewedFunctor1_default ff'Sol param_ff reparam_EF)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SR.Build_solveCoMod_return with (ffSol :=
          (Sol.ViewedFunctor1_default ff'Sol param_ff reparam_EF)%sol).
        move: conv_ff_Sol conv_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce).

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.ViewedFunctor1_default ff param_ff0 reparam_EF0) o>CoMod (Sol.ViewedFunctor1_default ff'Sol param_ff reparam_EF)) **)
      - pose Sol_toCompos_ff_Sol_o_ff'Sol := ( Sol.toCompos ff o>CoMod Sol.toCompos ff'Sol ).
        have [:blurb] :=
          (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_ff_Sol_o_ff'Sol blurb));
            first by intros; move: grade_ff conv_ff_Sol conv_ff'Sol; clear; abstract tac_degrade.
        tac_SR solveCoMod len Sol_toCompos_ff_Sol_o_ff'Sol blurb; move =>
        Sense00_Param_EF_ff_Sol_o_ff'Sol Sense01_Param_EF_ff_Sol_o_ff'Sol Sense1_Param_proj_ff_Sol_o_ff'Sol Sense1_Param_subst_ff_Sol_o_ff'Sol PParam_EF_ff_Sol_o_ff'Sol Sense1_Form_ff_Sol_o_ff'Sol Form_ff_Sol_o_ff'Sol ff_Sol_o_ff'Sol Sense1_Param_reparam_EF_ff_Sol_o_ff'Sol reparam_EF_ff_Sol_o_ff'Sol Congr_congr_ff_Sol_o_ff'Sol congr_ff_Sol_o_ff'Sol conv_ff_Sol_o_ff'Sol.

        pose Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol := ( Sol.toCompos_PParam param_ff0 o>CoMod__ Sol.toCompos_PParam param_ff ).
        have [:blurbp] :=
          (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol blurbp));
            first by intros; move: grade_ff conv_ff_Sol conv_ff'Sol; clear; abstract tac_degrade.
        tac_SRR solveCoMod_PParam len Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol blurbp; move =>
        Sense00_Param_EF_param_ff_Sol_o_param_ff'Sol Sense01_Param_EF_param_ff_Sol_o_param_ff'Sol Sense1_Param_proj_param_ff_Sol_o_param_ff'Sol Sense1_Param_subst_param_ff_Sol_o_param_ff'Sol PParam_EF_param_ff_Sol_o_param_ff'Sol param_ff_Sol_o_param_ff'Sol Sense1_Param_reparam_EF_param_ff_Sol_o_param_ff'Sol reparam_EF_param_ff_Sol_o_param_ff'Sol conv_param_ff_Sol_o_param_ff'Sol.
        clear solveCoMod solveCoMod_PParam.

        pose reparam_EFSol := (Rev_reparam reparam_EF_ff_Sol_o_ff'Sol) o>_$ (( Compos_pseudoCode_PParam_cong reparam_EF reparam_EF0 ) o>_$ reparam_EF_param_ff_Sol_o_param_ff'Sol) .
        eapply SR.Build_solveCoMod_return with (ffSol :=
                ( Sol.ViewedFunctor1_default ( ff_Sol_o_ff'Sol ) ( param_ff_Sol_o_param_ff'Sol ) ( reparam_EFSol ) )%sol).
        move: conv_ff_Sol conv_ff'Sol conv_ff_Sol_o_ff'Sol conv_param_ff_Sol_o_param_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce).

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.UnitViewedFunctor_default Param_F0 ff) o>CoMod (Sol.ViewedFunctor1_default ff'Sol param_ff reparam_EF)) **)
      - pose Sol_toCompos_ff_Sol_o_ff'Sol := ( Sol.toCompos ff o>CoMod Sol.toCompos ff'Sol ) .
        have [:blurb] :=
          (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_ff_Sol_o_ff'Sol blurb));
            first by intros; move: grade_ff conv_ff_Sol conv_ff'Sol; clear; abstract tac_degrade.
        tac_SR solveCoMod len Sol_toCompos_ff_Sol_o_ff'Sol blurb ; move =>
        Sense00_Param_EF_ff_Sol_o_ff'Sol Sense01_Param_EF_ff_Sol_o_ff'Sol Sense1_Param_proj_ff_Sol_o_ff'Sol Sense1_Param_subst_ff_Sol_o_ff'Sol PParam_EF_ff_Sol_o_ff'Sol Sense1_Form_ff_Sol_o_ff'Sol Form_ff_Sol_o_ff'Sol ff_Sol_o_ff'Sol Sense1_Param_reparam_EF_ff_Sol_o_ff'Sol reparam_EF_ff_Sol_o_ff'Sol Congr_congr_ff_Sol_o_ff'Sol congr_ff_Sol_o_ff'Sol conv_ff_Sol_o_ff'Sol.
        clear solveCoMod solveCoMod_PParam.

        eapply SR.Build_solveCoMod_return with (ffSol :=
          (Sol.UnitViewedFunctor_default Param_F ff_Sol_o_ff'Sol)%sol).
        move: conv_ff_Sol conv_ff'Sol conv_ff_Sol_o_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce).

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.Destructing_default param_ee_ reparam_ee_ ee__ reparam_ee__ congr_ee__) o>CoMod (Sol.ViewedFunctor1_default ff'Sol param_ff reparam_EF)) **)
      - pose Sol_toCompos_ff_Sol_o_ff'Sol := (fun G param cons_paramlocal form cons_form =>
                                                   Sol.toCompos (ee__ G param cons_paramlocal form cons_form) o>CoMod Sol.toCompos ff'Sol ) .
        Time have [:blurb_] := (fun G param cons_paramlocal form cons_form =>
               (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
                                          (Sol_toCompos_ff_Sol_o_ff'Sol G param cons_paramlocal form cons_form)
                                          (blurb_ G param cons_paramlocal form cons_form))));
                                 first by intros; move: grade_ff conv_ff_Sol conv_ff'Sol;
                                   subst Sol_toCompos_ff_Sol; subst Sol_toCompos_ff'Sol; clear; abstract tac_degrade. (* 300 secs; 108 secs; ? *)
        tac_SR_Family solveCoMod len Sol_toCompos_ff_Sol_o_ff'Sol blurb_ ;
          move : Sense00_Param_EF_ffSol Sense01_Param_EF_ffSol Sense1_Param_proj_ffSol Sense1_Param_subst_ffSol PParam_EF_ffSol Sense1_Form_ffSol
                                   Form_ffSol ffSol Sense1_Param_reparam_EF_ffSol reparam_EF_ffSol Congr_congr_ffSol congr_ffSol;
          move => Sense00_Param_EF_ff_Sol_o_ff'Sol Sense01_Param_EF_ff_Sol_o_ff'Sol Sense1_Param_proj_ff_Sol_o_ff'Sol Sense1_Param_subst_ff_Sol_o_ff'Sol PParam_EF_ff_Sol_o_ff'Sol Sense1_Form_ff_Sol_o_ff'Sol Form_ff_Sol_o_ff'Sol ff_Sol_o_ff'Sol Sense1_Param_reparam_EF_ff_Sol_o_ff'Sol reparam_EF_ff_Sol_o_ff'Sol Congr_congr_ff_Sol_o_ff'Sol congr_ff_Sol_o_ff'Sol conv_ff_Sol_o_ff'Sol.

        pose Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
                                Sol.toCompos_PParam (param_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                                                        o>CoMod__ Sol.toCompos_PParam param_ff).
         Time have [:blurbp_] := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
               (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _
                                                         (Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                                                         (blurbp_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))));
                                   first by intros; move: grade_ff conv_ff_Sol conv_ff'Sol;
                                     subst Sol_toCompos_ff_Sol; subst Sol_toCompos_ff'Sol; clear; abstract tac_degrade. (* 104 sec ; 83 secs ; ? *)
        tac_SRR_Family solveCoMod_PParam len Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol blurbp_ ;
          move: Sense00_Param_EF_param_ffSol Sense01_Param_EF_param_ffSol Sense1_Param_proj_param_ffSol Sense1_Param_subst_param_ffSol PParam_EF_param_ffSol param_ffSol Sense1_Param_reparam_EF_param_ffSol reparam_EF_param_ffSol;
          move => Sense00_Param_EF_param_ff_Sol_o_param_ff'Sol Sense01_Param_EF_param_ff_Sol_o_param_ff'Sol Sense1_Param_proj_param_ff_Sol_o_param_ff'Sol Sense1_Param_subst_param_ff_Sol_o_param_ff'Sol PParam_EF_param_ff_Sol_o_param_ff'Sol param_ff_Sol_o_param_ff'Sol Sense1_Param_reparam_EF_param_ff_Sol_o_param_ff'Sol reparam_EF_param_ff_Sol_o_param_ff'Sol conv_param_ff_Sol_o_param_ff'Sol.
        clear solveCoMod solveCoMod_PParam.

        pose reparam_ffSol_ := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
                                  (Assoc_reparam _ _ _)
                                    o>_$ (Compos_pseudoCode_PParam_cong reparam_EF (reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))) .
        pose reparam_ffSol__ := (fun G param cons_paramlocal form cons_form =>
                                   (Assoc_reparam _ _ _ )
                                     o>_$ (Compos_pseudoCode_PParam_cong (Refl_reparam PParam_EF) (reparam_ee__ G param cons_paramlocal form cons_form))).
        pose congr_ffSol__ := (fun G param cons_paramlocal form cons_form =>
                                 (Assoc_congrPseudoCode _ _ _ _ _ _)
                                   o>$ Compos_cong_congrPseudoCode (Refl_reparam PParam_EF) (Refl_congrPseudoCode Form_ff) (reparam_ee__ G param cons_paramlocal form cons_form) (congr_ee__ G param cons_paramlocal form cons_form)).

        pose reparam_ffSolffSol9_ := (fun (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G) (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P) (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P) =>
                                        Refl_reparam (AtMember_PParam PParam_ee_ cons_paramlocal)).
        pose reparam_ffSolffSol9__ := (fun (G : obGenerator) (param : Sense00_Param_SubstF G) (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) InFibre_Unit)(form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param) (cons_form : constructel_Form F0 form) =>
                                         Refl_reparam (AtMember_PParam PParam_ee_ cons_paramlocal)).
        pose congr_ffSolffSol9__ := (fun (G : obGenerator) (param : Sense00_Param_SubstF G) (cons_paramlocal : constructel_Param Param_SubstF (sval Sense1_Param_subst G param) InFibre_Unit)(form : Sense00_AtParam_ Sense1_FormParam_F Sense1_Param_proj param) (cons_form : constructel_Form F0 form) =>
                                       Refl_congrPseudoCode (AtMember_Form Form_ee__ cons_paramlocal cons_form)).
        pose reparam_ffSol'ffSol9'__ := (Refl_reparam (Compos_pseudoCode_PParam PParam_EF PParam_ee'__)).
        pose congr_ffSol'ffSol9'__ := (Refl_congrPseudoCode (Compos_pseudoCode PParam_EF Form_ff PParam_ee'__ Form_ee'__)).

        pose reparam_ffSol9_ := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
                                   ((Rev_reparam (Compos_pseudoCode_PParam_cong reparam_ffSol'ffSol9'__ (reparam_ffSolffSol9_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))
                                      o>_$ ((reparam_ffSol_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) o>_$ (reparam_EF_param_ff_Sol_o_param_ff'Sol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))).
        pose reparam_ffSol9__ := (fun G param cons_paramlocal form cons_form => ((Rev_reparam (Compos_pseudoCode_PParam_cong reparam_ffSol'ffSol9'__  (reparam_ffSolffSol9__ G param cons_paramlocal form cons_form)))
                                                       o>_$ ((reparam_ffSol__ G param cons_paramlocal form cons_form) o>_$ (reparam_EF_ff_Sol_o_ff'Sol G param cons_paramlocal form cons_form)))).
        pose congr_ffSol9__ := (fun G param cons_paramlocal form cons_form => (Rev_congrPseudoCode (Compos_cong_congrPseudoCode reparam_ffSol'ffSol9'__ congr_ffSol'ffSol9'__ (reparam_ffSolffSol9__ G param cons_paramlocal form cons_form) (congr_ffSolffSol9__ G param cons_paramlocal form cons_form)))
                                                    o>$ ((congr_ffSol__ G param cons_paramlocal form cons_form) o>$ (congr_ff_Sol_o_ff'Sol G param cons_paramlocal form cons_form))).

        eapply SR.Build_solveCoMod_return with (ffSol :=
          (Sol.Destructing_default param_ff_Sol_o_param_ff'Sol reparam_ffSol9_
                                   ff_Sol_o_ff'Sol reparam_ffSol9__ congr_ffSol9__ )%sol).

        Time move: conv_ff_Sol conv_ff'Sol conv_ff_Sol_o_ff'Sol conv_param_ff_Sol_o_param_ff'Sol; clear; intros; (*MEMO: no simpl *)
          eapply convCoMod_Trans with (ff0 :=
            (Destructing_default Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol reparam_ffSol_
                                Sol_toCompos_ff_Sol_o_ff'Sol reparam_ffSol__ congr_ffSol__ ));
          last (by eapply Destructing_default_cong'''; intuition (try apply Refl_coh_congrPseudoCode_PParam; try apply Refl_coh_congrPseudoCode; eauto));
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce). (* 75 sec *)

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.Forget param_forget' reparam_forget' ff) o>CoMod (Sol.ViewedFunctor1_default ff'Sol param_ff reparam_EF)) **)
      - pose Sol_toCompos_ff_Sol_o_ff'Sol := ( Sol.toCompos ff o>CoMod Sol_toCompos_ff'Sol ).
        have [:blurb] :=
          (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_ff_Sol_o_ff'Sol blurb));
            first by intros; move: grade_ff conv_ff_Sol conv_ff'Sol; clear; abstract tac_degrade.
        tac_SR solveCoMod len Sol_toCompos_ff_Sol_o_ff'Sol blurb; move =>
        Sense00_Param_EF_ff_Sol_o_ff'Sol Sense01_Param_EF_ff_Sol_o_ff'Sol Sense1_Param_proj_ff_Sol_o_ff'Sol Sense1_Param_subst_ff_Sol_o_ff'Sol PParam_EF_ff_Sol_o_ff'Sol Sense1_Form_ff_Sol_o_ff'Sol Form_ff_Sol_o_ff'Sol ff_Sol_o_ff'Sol Sense1_Param_reparam_EF_ff_Sol_o_ff'Sol reparam_EF_ff_Sol_o_ff'Sol Congr_congr_ff_Sol_o_ff'Sol congr_ff_Sol_o_ff'Sol conv_ff_Sol_o_ff'Sol .
        clear solveCoMod solveCoMod_PParam.

        eapply SR.Build_solveCoMod_return with (ffSol :=
                ( Sol.Forget param_forget' (reparam_forget' o>_$ (Refl_reparam _) (*/!\ ... *)) ff_Sol_o_ff'Sol )%sol).
        move: conv_ff_Sol conv_ff'Sol conv_ff_Sol_o_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce).
    }

  (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
      is (ff_Sol o>CoMod (Sol.UnitViewedFunctor_default Param_F ff'Sol)) **)
  * pose Sol_toCompos_ff_Sol_o_ff'Sol := ( Sol.toCompos ff_Sol o>CoMod (Sol.toCompos ff'Sol) ).
    have [:blurb] :=
      (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_ff_Sol_o_ff'Sol blurb));
        first by intros; move: grade_ff conv_ff_Sol conv_ff'Sol; clear; abstract tac_degrade.
    tac_SR solveCoMod len Sol_toCompos_ff_Sol_o_ff'Sol blurb; move =>
    Sense00_Param_EF_ff_Sol_o_ff'Sol Sense01_Param_EF_ff_Sol_o_ff'Sol Sense1_Param_proj_ff_Sol_o_ff'Sol Sense1_Param_subst_ff_Sol_o_ff'Sol PParam_EF_ff_Sol_o_ff'Sol Sense1_Form_ff_Sol_o_ff'Sol Form_ff_Sol_o_ff'Sol ff_Sol_o_ff'Sol Sense1_Param_reparam_EF_ff_Sol_o_ff'Sol reparam_EF_ff_Sol_o_ff'Sol Congr_congr_ff_Sol_o_ff'Sol congr_ff_Sol_o_ff'Sol conv_ff_Sol_o_ff'Sol .
    clear solveCoMod solveCoMod_PParam.

    eapply SR.Build_solveCoMod_return with (ffSol := ( Sol.UnitViewedFunctor_default Param_F ff_Sol_o_ff'Sol )%sol).
    move: conv_ff_Sol conv_ff'Sol conv_ff_Sol_o_ff'Sol; clear;
      (tac_simpl; intros; eapply convCoMod_Trans with
                              (ff0 := Sol.toCompos ff_Sol o>CoMod Sol_toCompos_ff'Sol);
       subst Sol_toCompos_ff'Sol; tac_reduce).

  (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
      is (ff_Sol o>CoMod (Sol.Destructing_default param_ee_ reparam_ee_ ee__ reparam_ee__ congr_ee__)) **)
  * move: (Sol.morCoMod_codomP ff_Sol) => ff_Sol_morCoMod_codomP.
    { destruct ff_Sol_morCoMod_codomP;
        simpl in conv_ff_Sol; set Sol_toCompos_ff_Sol := (X in X [ _ @^ _ ]<~~ ff_ ) in conv_ff_Sol.

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.Unit (ViewingFunctorSumSubst_default F)) o>CoMod (Sol.Destructing_default param_ee_ reparam_ee_ ee__ reparam_ee__ congr_ee__)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SR.Build_solveCoMod_return with (ffSol := ( Sol.Destructing_default param_ee_ reparam_ee_ ee__ reparam_ee__ congr_ee__ )%sol).
        move: conv_ff_Sol conv_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce).

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.Constructing_default cons_paramlocal cons_form) o>CoMod (Sol.Destructing_default param_ee_ reparam_ee_ ee__ reparam_ee__ congr_ee__)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SR.Build_solveCoMod_return with (ffSol := ( Sol.UnitViewedFunctor_default Param_E ( ee__ G param cons_paramlocal form cons_form ) )%sol).
        Time move: conv_ff_Sol conv_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce). (* 17 secs  *)

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.Forget param_forget' reparam_forget' ff) o>CoMod (Sol.Destructing_default param_ee_ reparam_ee_ ee__ reparam_ee__ congr_ee__)) **)
      - pose Sol_toCompos_ff_Sol_o_ff'Sol := ( Sol.toCompos ff o>CoMod Sol_toCompos_ff'Sol ).
        have [:blurb] :=
          (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_ff_Sol_o_ff'Sol blurb));
            first by intros; move: grade_ff conv_ff_Sol conv_ff'Sol; clear; abstract tac_degrade. (* ? sec *)
        tac_SR solveCoMod len Sol_toCompos_ff_Sol_o_ff'Sol blurb; move =>
        Sense00_Param_EF_ff_Sol_o_ff'Sol Sense01_Param_EF_ff_Sol_o_ff'Sol Sense1_Param_proj_ff_Sol_o_ff'Sol Sense1_Param_subst_ff_Sol_o_ff'Sol PParam_EF_ff_Sol_o_ff'Sol Sense1_Form_ff_Sol_o_ff'Sol Form_ff_Sol_o_ff'Sol ff_Sol_o_ff'Sol Sense1_Param_reparam_EF_ff_Sol_o_ff'Sol reparam_EF_ff_Sol_o_ff'Sol Congr_congr_ff_Sol_o_ff'Sol congr_ff_Sol_o_ff'Sol conv_ff_Sol_o_ff'Sol . (* ? sec *)
        clear solveCoMod solveCoMod_PParam.

        eapply SR.Build_solveCoMod_return with (ffSol :=
          ( Sol.Forget param_forget' (reparam_forget' o>_$ (Refl_reparam _) (*/!\ ... *)) ff_Sol_o_ff'Sol )%sol).

        Time move: conv_ff_Sol conv_ff'Sol conv_ff_Sol_o_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce). (* ? sec *)
    }

  (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
      is (ff_Sol o>CoMod (Sol.Forget param_forget' reparam_forget' ff'Sol)) **)
  * move: (Sol.morCoMod_codomP ff_Sol) => ff_Sol_morCoMod_codomP.
    { destruct ff_Sol_morCoMod_codomP;
        simpl in conv_ff_Sol; set Sol_toCompos_ff_Sol := (X in X [ _ @^ _ ]<~~ ff_ ) in conv_ff_Sol.

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.Unit (PiSubst F Param_F Param_PiSubstF PParam_SubstF)) o>CoMod (Sol.Forget param_forget' reparam_forget' ff'Sol)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SR.Build_solveCoMod_return with (ffSol := ( Sol.Forget param_forget' reparam_forget' ff'Sol )%sol).
        move: conv_ff_Sol conv_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce).

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.Forget param_forget'0 reparam_forget'0 ff) o>CoMod (Sol.Forget param_forget' reparam_forget' ff'Sol)) **)
      - pose Sol_toCompos_ff_Sol_o_ff'Sol := ( Sol.toCompos ff o>CoMod Sol_toCompos_ff'Sol ).
        have [:blurb] :=
          (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_ff_Sol_o_ff'Sol blurb));
            first by intros; move: grade_ff conv_ff_Sol conv_ff'Sol; clear; abstract tac_degrade.
        tac_SR solveCoMod len Sol_toCompos_ff_Sol_o_ff'Sol blurb; move =>
        Sense00_Param_EF_ff_Sol_o_ff'Sol Sense01_Param_EF_ff_Sol_o_ff'Sol Sense1_Param_proj_ff_Sol_o_ff'Sol Sense1_Param_subst_ff_Sol_o_ff'Sol PParam_EF_ff_Sol_o_ff'Sol Sense1_Form_ff_Sol_o_ff'Sol Form_ff_Sol_o_ff'Sol ff_Sol_o_ff'Sol Sense1_Param_reparam_EF_ff_Sol_o_ff'Sol reparam_EF_ff_Sol_o_ff'Sol Congr_congr_ff_Sol_o_ff'Sol congr_ff_Sol_o_ff'Sol conv_ff_Sol_o_ff'Sol .
        clear solveCoMod solveCoMod_PParam.

        eapply SR.Build_solveCoMod_return with (ffSol :=
          ( Sol.Forget param_forget'0 (reparam_forget'0 o>_$ (Refl_reparam _) (*/!\ ... *)) ff_Sol_o_ff'Sol )%sol).

        Time move: conv_ff_Sol conv_ff'Sol conv_ff_Sol_o_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce). (* 78 sec *)

      (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
          is ((Sol.Remember param_forget'0 reparam_forget'0 ff) o>CoMod (Sol.Forget param_forget' reparam_forget' ff'Sol)) **)
      - pose Sol_toCompos_ff_Sol_o_ff'Sol := ( Sol.toCompos ff o>CoMod Sol.toCompos ff'Sol ).
        have [:blurb] :=
          (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_ff_Sol_o_ff'Sol blurb));
            first by intros; move: grade_ff conv_ff_Sol conv_ff'Sol; clear; abstract tac_degrade.
        tac_SR solveCoMod len Sol_toCompos_ff_Sol_o_ff'Sol blurb; move =>
        Sense00_Param_EF_ff_Sol_o_ff'Sol Sense01_Param_EF_ff_Sol_o_ff'Sol Sense1_Param_proj_ff_Sol_o_ff'Sol Sense1_Param_subst_ff_Sol_o_ff'Sol PParam_EF_ff_Sol_o_ff'Sol Sense1_Form_ff_Sol_o_ff'Sol Form_ff_Sol_o_ff'Sol ff_Sol_o_ff'Sol Sense1_Param_reparam_EF_ff_Sol_o_ff'Sol reparam_EF_ff_Sol_o_ff'Sol Congr_congr_ff_Sol_o_ff'Sol congr_ff_Sol_o_ff'Sol conv_ff_Sol_o_ff'Sol .
        clear solveCoMod solveCoMod_PParam.

        eapply SR.Build_solveCoMod_return with (ffSol := ( ff_Sol_o_ff'Sol )%sol).

        move: conv_ff_Sol conv_ff'Sol conv_ff_Sol_o_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_Trans with
                                  (ff0 := Sol_toCompos_ff_Sol o>CoMod Sol_toCompos_ff'Sol);
           subst Sol_toCompos_ff_Sol Sol_toCompos_ff'Sol; tac_reduce).
    }

  (** ff is (ff_ o>CoMod ff') , to (ff_Sol o>CoMod ff'Sol)  ,
      is (ff_Sol o>CoMod (Sol.Remember param_forget' reparam_forget' ff'Sol reparam_remember congr_ll)) **)
  * pose Sol_toCompos_ff_Sol_o_ff'Sol := ( Sol.toCompos ff_Sol o>CoMod (Sol.toCompos ff'Sol) ).
    have [:blurb] :=
      (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_ff_Sol_o_ff'Sol blurb));
        first by intros; move: grade_ff conv_ff_Sol conv_ff'Sol; clear; abstract tac_degrade.
    tac_SR solveCoMod len Sol_toCompos_ff_Sol_o_ff'Sol blurb; move =>
    Sense00_Param_EF_ff_Sol_o_ff'Sol Sense01_Param_EF_ff_Sol_o_ff'Sol Sense1_Param_proj_ff_Sol_o_ff'Sol Sense1_Param_subst_ff_Sol_o_ff'Sol PParam_EF_ff_Sol_o_ff'Sol Sense1_Form_ff_Sol_o_ff'Sol Form_ff_Sol_o_ff'Sol ff_Sol_o_ff'Sol Sense1_Param_reparam_EF_ff_Sol_o_ff'Sol reparam_EF_ff_Sol_o_ff'Sol Congr_congr_ff_Sol_o_ff'Sol congr_ff_Sol_o_ff'Sol conv_ff_Sol_o_ff'Sol .
    clear solveCoMod solveCoMod_PParam.

    pose reparam_forget'_ffSol := reparam_forget'.
    pose reparam_remember_ffSol := ( (Rev_reparam (Assoc_reparam _ _ _)) o>_$ (Compos_pseudoCode_PParam_cong reparam_remember (Refl_reparam PParam_F''F'Sol)) ).
    pose congr_ll_ffSol := ( (Rev_congrPseudoCode (Assoc_congrPseudoCode _ _ _ _ _ _)) o>$ (Compos_cong_congrPseudoCode reparam_remember congr_ll (Refl_reparam PParam_F''F'Sol) (Refl_congrPseudoCode Form_ff_Sol) ) ).

    pose reparam_forget'_ffSol9 := (reparam_forget'_ffSol o>_$ (Refl_reparam _)).
    pose reparam_remember_ffSol9 := ( (Rev_reparam (Compos_pseudoCode_PParam_cong (Refl_reparam _) (Refl_reparam _)))
                o>_$ (reparam_remember_ffSol o>_$ reparam_EF_ff_Sol_o_ff'Sol) ).
    pose congr_ll_ffSol9 := ( (Rev_congrPseudoCode (Compos_cong_congrPseudoCode (Refl_reparam _) (Refl_congrPseudoCode _)
                                                                   (Refl_reparam _) (Refl_congrPseudoCode _)))
                o>$ (congr_ll_ffSol o>$ congr_ff_Sol_o_ff'Sol) ).

    eapply SR.Build_solveCoMod_return with (ffSol := ( Sol.Remember param_forget' reparam_forget'_ffSol9
                                                         ff_Sol_o_ff'Sol reparam_remember_ffSol9 congr_ll_ffSol9 )%sol).

    move: conv_ff_Sol conv_ff'Sol conv_ff_Sol_o_ff'Sol; clear;
      (simpl; intros; eapply convCoMod_Trans with
                          (ff0 := ( Remember (Sol.toCompos_PParam param_forget') reparam_forget'_ffSol
                                             Sol_toCompos_ff_Sol_o_ff'Sol reparam_remember_ffSol congr_ll_ffSol )));
      last (by eapply Remember_cong; intuition (try apply Refl_coh_congrPseudoCode_PParam; try apply Refl_coh_congrPseudoCode; eauto));
      (tac_simpl; intros; eapply convCoMod_Trans with
                              (ff0 := Sol.toCompos ff_Sol o>CoMod Sol_toCompos_ff'Sol);
       subst Sol_toCompos_ff'Sol; tac_reduce).
}
{ (** solveCoMod_PParam *) case : len => [ | len ].

(** len is O **)
- intros; exfalso;
    by intros; move: grade_ff; clear; abstract tac_degrade.

(** len is (S len) **)
- intros until param_ff. case : Sense00_Param_E Sense01_Param_E Param_E Sense00_Param_F Sense01_Param_F Param_F Sense00_Param_EF Sense01_Param_EF Sense1_Param_proj_ff Sense1_Param_subst_ff PParam_EF / param_ff ; intros.

(** param_ff is  (param_ff_ o>CoMod__ param_ff') *) all: cycle 1.

(** param_ff is  (Unit_PParam Param_F) **)
+ clear solveCoMod solveCoMod_PParam.
  eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol := ( Sol.Unit_PParam Param_F )%sol).
  clear; tac_reduce.

(** param_ff is  (ViewMor_PParam pp)  **)
+ clear solveCoMod solveCoMod_PParam.
  eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol := ( Sol.ViewMor_PParam pp )%sol).
  clear; tac_reduce.

(** param_ff is  (Constructing_PParam_default cons_paramlocal) **)
+ clear solveCoMod solveCoMod_PParam.
  eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol := ( Sol.Constructing_PParam_default cons_paramlocal )%sol).
  clear; tac_reduce.

(** param_ff is  (ViewedFunctor1_PParam_default param_ff) **)
+ have [:blurbp] :=
    (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff blurbp));
      first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SRR solveCoMod_PParam len param_ff blurbp; move =>
  Sense00_Param_EF_param_ffSol Sense01_Param_EF_param_ffSol Sense1_Param_proj_param_ffSol Sense1_Param_subst_param_ffSol PParam_EF_param_ffSol param_ffSol Sense1_Param_reparam_EF_param_ffSol reparam_EF_param_ffSol conv_param_ffSol .
  clear solveCoMod solveCoMod_PParam.

  eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol :=
    ( Sol.ViewedFunctor1_PParam_default param_ffSol )%sol).

  move: conv_param_ffSol; clear; tac_reduce.

(** param_ff is  (UnitViewedFunctor_PParam_default param_ff) **)
+ have [:blurbp] :=
    (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff blurbp));
      first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SRR solveCoMod_PParam len param_ff blurbp; move =>
  Sense00_Param_EF_param_ffSol Sense01_Param_EF_param_ffSol Sense1_Param_proj_param_ffSol Sense1_Param_subst_param_ffSol PParam_EF_param_ffSol param_ffSol Sense1_Param_reparam_EF_param_ffSol reparam_EF_param_ffSol conv_param_ffSol .
  clear solveCoMod solveCoMod_PParam.

  eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol :=
   ( Sol.UnitViewedFunctor_PParam_default param_ffSol )%sol).

  move: conv_param_ffSol; clear; tac_reduce.

(** ff is  (Destructing_PParam_default param_ee_ reparam_ee_) **)
+ Time have [:blurbp_] := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
         (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _
                                                   (param_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                                                   (blurbp_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))));
                            first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SRR_Family solveCoMod_PParam len param_ee_ blurbp_ ;
    move: Sense00_Param_EF_param_ffSol Sense01_Param_EF_param_ffSol Sense1_Param_proj_param_ffSol Sense1_Param_subst_param_ffSol
                                        PParam_EF_param_ffSol param_ffSol Sense1_Param_reparam_EF_param_ffSol reparam_EF_param_ffSol;
    move => Sense00_Param_EF_param_ffSol Sense01_Param_EF_param_ffSol Sense1_Param_proj_param_ffSol Sense1_Param_subst_param_ffSol
                                         PParam_EF_param_ffSol param_ffSol Sense1_Param_reparam_EF_param_ffSol reparam_EF_param_ffSol conv_param_ffSol.
  clear solveCoMod solveCoMod_PParam.

  pose reparam_eeeeSol9_ := (fun (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G) (P : obParametrizator) (inFibre_P : inFibre G P)
                                               (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P) (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P) =>
                             Refl_reparam (AtMember_PParam PParam_ee_ cons_paramlocal)).
  pose reparam_ee'eeSol'__ := (Refl_reparam (PParam_ee'__)).

  pose reparam_eeSol_ := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
                            ((Rev_reparam (Compos_pseudoCode_PParam_cong reparam_ee'eeSol'__ (reparam_eeeeSol9_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))
                               o>_$ ((reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) o>_$ (reparam_EF_param_ffSol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))).

  eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol :=
    ( Sol.Destructing_PParam_default param_ffSol reparam_eeSol_ )%sol).

  move: conv_param_ffSol; clear; intros;
    eapply Destructing_PParam_default_cong; intuition (try apply Refl_coh_congrPseudoCode_PParam; eauto).

(** param_ff is  (Formatting ff param_ff reparam_EF param_ee) **)
+ have [:blurb] :=
    (SR.conv_ffSol (solveCoMod len _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ff blurb));
      first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SR solveCoMod len ff blurb; move =>
  Sense00_Param_EF_ffSol Sense01_Param_EF_ffSol Sense1_Param_proj_ffSol Sense1_Param_subst_ffSol PParam_EF_ffSol Sense1_Form_ffSol Form_ffSol ffSol Sense1_Param_reparam_EF_ffSol reparam_EF_ffSol Congr_congr_ffSol congr_ffSol conv_ffSol .

  have [:blurbp] :=
    (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff blurbp));
      first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SRR solveCoMod_PParam len param_ff blurbp; move  =>
  Sense00_Param_EF_param_ffSol Sense01_Param_EF_param_ffSol Sense1_Param_proj_param_ffSol Sense1_Param_subst_param_ffSol PParam_EF_param_ffSol param_ffSol Sense1_Param_reparam_EF_param_ffSol reparam_EF_param_ffSol conv_param_ffSol .

  have [:blurbp] :=
    (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ee blurbp));
      first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SRR solveCoMod_PParam len param_ee blurbp; move  =>
  Sense00_Param_EF_param_eeSol Sense01_Param_EF_param_eeSol Sense1_Param_proj_param_eeSol Sense1_Param_subst_param_eeSol PParam_EF_param_eeSol param_eeSol Sense1_Param_reparam_EF_param_eeSol reparam_EF_param_eeSol conv_param_eeSol .
  clear solveCoMod solveCoMod_PParam.

  eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol :=
    (Sol.Formatting ffSol param_ffSol ( (Rev_reparam reparam_EF_ffSol) o>_$
                (reparam_EF o>_$ reparam_EF_param_ffSol) ) param_eeSol)%sol ).

  move:  conv_param_eeSol conv_param_ffSol conv_ffSol; clear; tac_reduce.

(** param_ff is  (param_ff_ o>CoMod__ param_ff') *)
+ have [:blurbp] :=
    (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff' blurbp));
      first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SRR solveCoMod_PParam len param_ff' blurbp; move =>
  Sense00_Param_EF_param_ff'Sol Sense01_Param_EF_param_ff'Sol Sense1_Param_proj_param_ff'Sol Sense1_Param_subst_param_ff'Sol PParam_EF_param_ff'Sol param_ff'Sol Sense1_Param_reparam_EF_param_ff'Sol reparam_EF_param_ff'Sol conv_param_ff'Sol .
  have [:blurbp] :=
    (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ param_ff_ blurbp));
      first by intros; move: grade_ff; clear; abstract tac_degrade.
  tac_SRR solveCoMod_PParam len param_ff_ blurbp; move =>
  Sense00_Param_EF_param_ff_Sol Sense01_Param_EF_param_ff_Sol Sense1_Param_proj_param_ff_Sol Sense1_Param_subst_param_ff_Sol PParam_EF_param_ff_Sol param_ff_Sol Sense1_Param_reparam_EF_param_ff_Sol reparam_EF_param_ff_Sol conv_param_ff_Sol .

  (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol)  **)
  destruct param_ff'Sol; simpl in conv_param_ff'Sol; set Sol_toCompos_PParam_param_ff'Sol := (X in X [ _ ]<~~__ param_ff') in conv_param_ff'Sol.

  (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
      is (param_ff_Sol o>CoMod__ (Sol.Unit_PParam Param_F)) **)
  * clear solveCoMod solveCoMod_PParam.
    eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol := ( param_ff_Sol )%sol).
    move: conv_param_ff_Sol conv_param_ff'Sol; clear;
      (tac_simpl; intros; eapply convCoMod_PParam_Trans with
                              (param_ff0 := param_ff_ o>CoMod__ Sol_toCompos_PParam_param_ff'Sol);
       subst Sol_toCompos_PParam_param_ff'Sol; tac_reduce).

  (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
      is (param_ff_Sol o>CoMod__ (Sol.ViewMor_PParam pp)) **)
  * move: (Sol.morCoMod_PParam_codomP param_ff_Sol) => param_ff_Sol_morCoMod_PParam_codomP.
    { destruct param_ff_Sol_morCoMod_PParam_codomP;
        simpl in conv_param_ff_Sol; set Sol_toCompos_PParam_param_ff_Sol := (X in X [ _ ]<~~__ param_ff_ ) in conv_param_ff_Sol.

      (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
          is ((Sol.Unit_PParam (View_Param P)) o>CoMod__ (Sol.ViewMor_PParam pp)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol := ( Sol.ViewMor_PParam pp )%sol).
        move: conv_param_ff_Sol conv_param_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_PParam_Trans with
                                  (param_ff0 := Sol_toCompos_PParam_param_ff_Sol o>CoMod__ Sol_toCompos_PParam_param_ff'Sol);
           subst Sol_toCompos_PParam_param_ff_Sol Sol_toCompos_PParam_param_ff'Sol; tac_reduce).

      (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
          is ((Sol.ViewMor_PParam pp0) o>CoMod__ (Sol.ViewMor_PParam pp)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol :=
                  ( Sol.ViewMor_PParam (p:=((inFibre_transp_codom inFibre_P p0) o>Parametrizator p))
                      (viewingDefault_Constructel_Param_action pp pp0) )%sol).
        move: conv_param_ff_Sol conv_param_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_PParam_Trans with
                                  (param_ff0 := Sol_toCompos_PParam_param_ff_Sol o>CoMod__ Sol_toCompos_PParam_param_ff'Sol);
           subst Sol_toCompos_PParam_param_ff_Sol Sol_toCompos_PParam_param_ff'Sol; tac_reduce).
    }

  (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
      is (param_ff_Sol o>CoMod__ (Sol.Constructing_PParam_default cons_paramlocal)) **)
  * move: (Sol.morCoMod_PParam_codomP param_ff_Sol) => param_ff_Sol_morCoMod_PParam_codomP.
    { destruct param_ff_Sol_morCoMod_PParam_codomP;
        simpl in conv_param_ff_Sol; set Sol_toCompos_PParam_param_ff_Sol := (X in X [ _ ]<~~__ param_ff_ ) in conv_param_ff_Sol.

      (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
          is ((Sol.Unit_PParam (View_Param P)) o>CoMod__ (Sol.Constructing_PParam_default cons_paramlocal)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol := ( Sol.Constructing_PParam_default cons_paramlocal )%sol).
        move: conv_param_ff_Sol conv_param_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_PParam_Trans with
                                  (param_ff0 := Sol_toCompos_PParam_param_ff_Sol o>CoMod__ Sol_toCompos_PParam_param_ff'Sol);
           subst Sol_toCompos_PParam_param_ff_Sol Sol_toCompos_PParam_param_ff'Sol; tac_reduce).

      (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
          is ((Sol.ViewMor_PParam pp) o>CoMod__ (Sol.Constructing_PParam_default cons_paramlocal)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol :=
          ( Sol.Constructing_PParam_default (constructel_Param_action cons_paramlocal pp (eq_refl _)) )%sol).
        move: conv_param_ff_Sol conv_param_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_PParam_Trans with
                                  (param_ff0 := Sol_toCompos_PParam_param_ff_Sol o>CoMod__ Sol_toCompos_PParam_param_ff'Sol);
           subst Sol_toCompos_PParam_param_ff_Sol Sol_toCompos_PParam_param_ff'Sol; tac_reduce).
    }

  (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
      is (param_ff_Sol o>CoMod__ (Sol.ViewedFunctor1_PParam_default param_ff'Sol)) **)
  * move: (Sol.morCoMod_PParam_codomP param_ff_Sol) => param_ff_Sol_morCoMod_PParam_codomP.
    { destruct param_ff_Sol_morCoMod_PParam_codomP;
        simpl in conv_param_ff_Sol; set Sol_toCompos_PParam_param_ff_Sol := (X in X [ _ ]<~~__ param_ff_ ) in conv_param_ff_Sol.

      (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
          is ((Sol. Unit_PParam (ViewedFunctor_Param_default Param_F0)) o>CoMod__ (Sol.ViewedFunctor1_PParam_default param_ff'Sol)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol := ( Sol.ViewedFunctor1_PParam_default param_ff'Sol )%sol).
        move: conv_param_ff_Sol conv_param_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_PParam_Trans with
                                  (param_ff0 := Sol_toCompos_PParam_param_ff_Sol o>CoMod__ Sol_toCompos_PParam_param_ff'Sol);
           subst Sol_toCompos_PParam_param_ff_Sol Sol_toCompos_PParam_param_ff'Sol; tac_reduce).

      (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
          is ((Sol.ViewedFunctor1_PParam_default param_ff) o>CoMod__ (Sol.ViewedFunctor1_PParam_default param_ff'Sol)) **)
      - pose Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol := ( Sol.toCompos_PParam param_ff o>CoMod__ Sol.toCompos_PParam param_ff'Sol ).
        have [:blurbp] :=
          (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol blurbp));
            first by intros; move: grade_ff conv_param_ff_Sol conv_param_ff'Sol; clear; abstract tac_degrade.
        tac_SRR solveCoMod_PParam len Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol blurbp; move =>
        Sense00_Param_EF_param_ff_Sol_o_param_ff'Sol Sense01_Param_EF_param_ff_Sol_o_param_ff'Sol Sense1_Param_proj_param_ff_Sol_o_param_ff'Sol Sense1_Param_subst_param_ff_Sol_o_param_ff'Sol PParam_EF_param_ff_Sol_o_param_ff'Sol param_ff_Sol_o_param_ff'Sol Sense1_Param_reparam_EF_param_ff_Sol_o_param_ff'Sol reparam_EF_param_ff_Sol_o_param_ff'Sol conv_param_ff_Sol_o_param_ff'Sol .
        clear solveCoMod solveCoMod_PParam.

        eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol :=
          ( Sol.ViewedFunctor1_PParam_default param_ff_Sol_o_param_ff'Sol )%sol).
        move: conv_param_ff_Sol conv_param_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_PParam_Trans with
              (param_ff0 := Sol_toCompos_PParam_param_ff_Sol o>CoMod__ Sol_toCompos_PParam_param_ff'Sol);
           subst Sol_toCompos_PParam_param_ff_Sol Sol_toCompos_PParam_param_ff'Sol; tac_reduce).

      (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
          is ((Sol.UnitViewedFunctor_PParam_default param_ff) o>CoMod__ (Sol.ViewedFunctor1_PParam_default param_ff'Sol)) **)
      - pose Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol := ( Sol.toCompos_PParam param_ff o>CoMod__ Sol.toCompos_PParam param_ff'Sol ).
        have [:blurbp] :=
          (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol blurbp));
            first by intros; move: grade_ff conv_param_ff_Sol conv_param_ff'Sol; clear; abstract tac_degrade.
        tac_SRR solveCoMod_PParam len Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol blurbp; move =>
        Sense00_Param_EF_param_ff_Sol_o_param_ff'Sol Sense01_Param_EF_param_ff_Sol_o_param_ff'Sol Sense1_Param_proj_param_ff_Sol_o_param_ff'Sol Sense1_Param_subst_param_ff_Sol_o_param_ff'Sol PParam_EF_param_ff_Sol_o_param_ff'Sol param_ff_Sol_o_param_ff'Sol Sense1_Param_reparam_EF_param_ff_Sol_o_param_ff'Sol reparam_EF_param_ff_Sol_o_param_ff'Sol conv_param_ff_Sol_o_param_ff'Sol .
        clear solveCoMod solveCoMod_PParam.

        eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol :=
          ( Sol.UnitViewedFunctor_PParam_default param_ff_Sol_o_param_ff'Sol )%sol).
        move: conv_param_ff_Sol conv_param_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_PParam_Trans with
             (param_ff0 := Sol_toCompos_PParam_param_ff_Sol o>CoMod__ Sol_toCompos_PParam_param_ff'Sol);
           subst Sol_toCompos_PParam_param_ff_Sol Sol_toCompos_PParam_param_ff'Sol; tac_reduce).

      (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
          is ((Sol.Destructing_PParam_default param_ee_ reparam_ee_) o>CoMod__ (Sol.ViewedFunctor1_PParam_default param_ff'Sol)) **)
      - pose Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
                                Sol.toCompos_PParam (param_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                                                        o>CoMod__ Sol.toCompos_PParam param_ff'Sol).
        have [:blurbp_] := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
               (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _
                      (Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)
                      (blurbp_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))));
                             first by intros; move: grade_ff conv_param_ff_Sol conv_param_ff'Sol;
                               subst Sol_toCompos_PParam_param_ff_Sol; subst Sol_toCompos_PParam_param_ff'Sol; clear; abstract tac_degrade.
        tac_SRR_Family solveCoMod_PParam len Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol blurbp_ ;
          move: Sense00_Param_EF_param_ffSol Sense01_Param_EF_param_ffSol Sense1_Param_proj_param_ffSol Sense1_Param_subst_param_ffSol
                                              PParam_EF_param_ffSol param_ffSol Sense1_Param_reparam_EF_param_ffSol reparam_EF_param_ffSol;
          move => Sense00_Param_EF_param_ff_Sol_o_param_ff'Sol Sense01_Param_EF_param_ff_Sol_o_param_ff'Sol Sense1_Param_proj_param_ff_Sol_o_param_ff'Sol Sense1_Param_subst_param_ff_Sol_o_param_ff'Sol PParam_EF_param_ff_Sol_o_param_ff'Sol param_ff_Sol_o_param_ff'Sol Sense1_Param_reparam_EF_param_ff_Sol_o_param_ff'Sol reparam_EF_param_ff_Sol_o_param_ff'Sol conv_param_ff_Sol_o_param_ff'Sol.
        clear solveCoMod solveCoMod_PParam.

        pose reparam_ffSol_ := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
                                  (Assoc_reparam _ _ _) o>_$ (Compos_pseudoCode_PParam_cong  (Refl_reparam PParam_EF)
                                    (reparam_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal))) .

        pose reparam_ffSolffSol9_ := (fun (G : obGenerator) (paramlocal : Sense00_Param_SumSubstF G) (P : obParametrizator) (inFibre_P : inFibre G P) (cons_inFibre_P : inFibreDefault_Constructel_Param inFibre_P) (cons_paramlocal : constructel_Param Param_SubstF paramlocal cons_inFibre_P) =>
                                        Refl_reparam (AtMember_PParam PParam_ee_ cons_paramlocal)).
        pose reparam_ffSol'ffSol9'__ := (Refl_reparam (Compos_pseudoCode_PParam PParam_EF PParam_ee'__)).

        pose reparam_ffSol9_ := (fun G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal =>
                                   ((Rev_reparam (Compos_pseudoCode_PParam_cong reparam_ffSol'ffSol9'__ (reparam_ffSolffSol9_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))
                                      o>_$ ((reparam_ffSol_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal) o>_$ (reparam_EF_param_ff_Sol_o_param_ff'Sol G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal)))).

        eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol :=
          ( Sol.Destructing_PParam_default param_ff_Sol_o_param_ff'Sol reparam_ffSol9_ )%sol).

        move: conv_param_ff_Sol conv_param_ff'Sol conv_param_ff_Sol_o_param_ff'Sol; clear;
          (simpl; intros; eapply convCoMod_PParam_Trans with
            (param_ff0 := ( Destructing_PParam_default Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol reparam_ffSol_ )));
          last (by eapply Destructing_PParam_default_cong; intuition (try apply Refl_coh_congrPseudoCode_PParam; eauto));
          (tac_simpl; intros; eapply convCoMod_PParam_Trans with
              (param_ff0 := Sol_toCompos_PParam_param_ff_Sol o>CoMod__ Sol_toCompos_PParam_param_ff'Sol);
           subst Sol_toCompos_PParam_param_ff_Sol Sol_toCompos_PParam_param_ff'Sol; tac_reduce).
    }

  (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
      is (param_ff_Sol o>CoMod__ (Sol.UnitViewedFunctor_PParam_default param_ff'Sol)) **)
  * pose Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol := ( Sol.toCompos_PParam param_ff_Sol o>CoMod__ Sol.toCompos_PParam param_ff'Sol ).
    have [:blurbp] :=
      (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol blurbp));
        first by intros; move: grade_ff conv_param_ff_Sol conv_param_ff'Sol; clear; abstract tac_degrade.
    tac_SRR solveCoMod_PParam len Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol blurbp; move =>
    Sense00_Param_EF_param_ff_Sol_o_param_ff'Sol Sense01_Param_EF_param_ff_Sol_o_param_ff'Sol Sense1_Param_proj_param_ff_Sol_o_param_ff'Sol Sense1_Param_subst_param_ff_Sol_o_param_ff'Sol PParam_EF_param_ff_Sol_o_param_ff'Sol param_ff_Sol_o_param_ff'Sol Sense1_Param_reparam_EF_param_ff_Sol_o_param_ff'Sol reparam_EF_param_ff_Sol_o_param_ff'Sol conv_param_ff_Sol_o_param_ff'Sol .
    clear solveCoMod solveCoMod_PParam.

    eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol :=
      ( Sol.UnitViewedFunctor_PParam_default param_ff_Sol_o_param_ff'Sol )%sol).
    move: conv_param_ff_Sol conv_param_ff'Sol conv_param_ff_Sol_o_param_ff'Sol; clear;
      (tac_simpl; intros; eapply convCoMod_PParam_Trans with
         (param_ff0 := Sol.toCompos_PParam param_ff_Sol o>CoMod__ Sol_toCompos_PParam_param_ff'Sol);
       subst Sol_toCompos_PParam_param_ff'Sol; tac_reduce).

  (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
      is (param_ff_Sol o>CoMod__ (Sol.Destructing_PParam_default param_ee_ reparam_ee_)) **)
  * move: (Sol.morCoMod_PParam_codomP param_ff_Sol) => param_ff_Sol_morCoMod_PParam_codomP.
    { destruct param_ff_Sol_morCoMod_PParam_codomP;
        simpl in conv_param_ff_Sol; set Sol_toCompos_PParam_param_ff_Sol := (X in X [ _ ]<~~__ param_ff_ ) in conv_param_ff_Sol.

      (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
          is ((Sol.Unit_PParam (ViewingFunctor_Param_default Param_SubstF)) o>CoMod__ (Sol.Destructing_PParam_default param_ee_ reparam_ee_)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol :=
          ( Sol.Destructing_PParam_default param_ee_ reparam_ee_ )%sol).
        move: conv_param_ff_Sol conv_param_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_PParam_Trans with
             (param_ff0 := Sol_toCompos_PParam_param_ff_Sol o>CoMod__ Sol_toCompos_PParam_param_ff'Sol);
           subst Sol_toCompos_PParam_param_ff_Sol Sol_toCompos_PParam_param_ff'Sol; tac_reduce).

      (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol) ,
          is ((Sol.Constructing_PParam_default cons_paramlocal) o>CoMod__ (Sol.Destructing_PParam_default param_ee_ reparam_ee_)) **)
      - clear solveCoMod solveCoMod_PParam.
        eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol :=
          ( Sol.UnitViewedFunctor_PParam_default ( param_ee_ G paramlocal P inFibre_P cons_inFibre_P cons_paramlocal ) )%sol).

        move: conv_param_ff_Sol conv_param_ff'Sol; clear;
          (tac_simpl; intros; eapply convCoMod_PParam_Trans with
             (param_ff0 := Sol_toCompos_PParam_param_ff_Sol o>CoMod__ Sol_toCompos_PParam_param_ff'Sol);
           subst Sol_toCompos_PParam_param_ff_Sol Sol_toCompos_PParam_param_ff'Sol; tac_reduce).
    (** /!\ GHOST /!\ REQUIRES MORE GENERAL REDUCTION OF
        Constructing_PParam_default isFiniteness_Transf_SubstF0 o>CoMod__ Destructing_PParam_default isFiniteness_Transf_SubstF  *)
    }

  (** param_ff is (param_ff_ o>CoMod__ param_ff') , to (param_ff_Sol o>CoMod__ param_ff'Sol)  ,
      is (param_ff_Sol o>CoMod__ (Sol.Formatting ff param_ff'Sol1 reparam_EF param_ff'Sol2)) **)
  * pose Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol := ( Sol.toCompos_PParam param_ff_Sol o>CoMod__ Sol.toCompos_PParam param_ff'Sol2 ).
    have [:blurbp] :=
      (SRR.conv_param_ffSol (solveCoMod_PParam len _ _ _ _ _ _ _ _ _ _ _ Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol blurbp));
        first by intros; move: grade_ff conv_param_ff_Sol conv_param_ff'Sol; clear; abstract tac_degrade.
    tac_SRR solveCoMod_PParam len Sol_toCompos_PParam_param_ff_Sol_o_param_ff'Sol blurbp; move =>
    Sense00_Param_EF_param_ff_Sol_o_param_ff'Sol Sense01_Param_EF_param_ff_Sol_o_param_ff'Sol Sense1_Param_proj_param_ff_Sol_o_param_ff'Sol Sense1_Param_subst_param_ff_Sol_o_param_ff'Sol PParam_EF_param_ff_Sol_o_param_ff'Sol param_ff_Sol_o_param_ff'Sol Sense1_Param_reparam_EF_param_ff_Sol_o_param_ff'Sol reparam_EF_param_ff_Sol_o_param_ff'Sol conv_param_ff_Sol_o_param_ff'Sol .
    clear solveCoMod solveCoMod_PParam.

    eapply SRR.Build_solveCoMod_PParam_return with (param_ffSol :=
      ( Sol.Formatting ff param_ff'Sol1 ( (Rev_reparam (Refl_reparam _)) o>_$ (reparam_EF o>_$ (Refl_reparam _)) ) param_ff_Sol_o_param_ff'Sol )%sol).
    move: conv_param_ff_Sol conv_param_ff'Sol conv_param_ff_Sol_o_param_ff'Sol; clear;
      (tac_simpl; intros; eapply convCoMod_PParam_Trans with
                              (param_ff0 := Sol.toCompos_PParam param_ff_Sol o>CoMod__ Sol_toCompos_PParam_param_ff'Sol);
       subst Sol_toCompos_PParam_param_ff'Sol; tac_reduce).
}
Time Optimize Heap. (* 28 secs , start Heap 4.7 G , end: Heap 4.7 G *)
Time Optimize Proof. (* Evars: 49138 -> 0 20secs *)
Time Defined. (* ... *)

End Resolve.
End PPARAMETRIZATION.
(** # #
#+END_SRC

Voila.

**)