(**************************************************************)
(*   Copyright Dominique Larchey-Wendling [*]                 *)
(*                                                            *)
(*                             [*] Affiliation LORIA -- CNRS  *)
(**************************************************************)
(*      This file is distributed under the terms of the       *)
(*         CeCILL v2 FREE SOFTWARE LICENSE AGREEMENT          *)
(**************************************************************)
(* ** Object-level encoding of exponential *)
From Undecidability.Shared.Libs.DLW.Utils
From Undecidability.H10.Matija
From Undecidability.H10.Dio
Set Implicit Arguments.
Local Notation power := (mscal mult 1).
Local Notation expo := (mscal mult 1).
(* Here one can witness how workable is automation of recognition of Diophantine shapes.  Notice that alpha_conditions below could probably be optimized from the new Diophantine shapes that include Diophantine functions. *)
Local Notation "x ≐ ⌞ n ⌟" := (df_cst x n)
(at level 49, no associativity, format "x  ≐  ⌞ n ⌟").
Local Notation "x ≐ y" := (df_eq x y)
(at level 49, no associativity, format "x  ≐  y").
Local Notation "x ≐ y ⨢ z" := (df_add x y z)
(at level 49, no associativity, y at next level, format "x  ≐  y  ⨢  z").
Local Notation "x ≐ y ⨰ z" := (df_mul x y z)
(at level 49, no associativity, y at next level, format "x  ≐  y  ⨰  z").

Lemma dio_rel_is_digit c q i y : 𝔻F c -> 𝔻F q -> 𝔻F i -> 𝔻F y
-> 𝔻R (fun ν => is_digit (c ν) (q ν) (i ν) (y ν)).