Parcoursup / Calcul de l'ordre d'appel des candidats index


module RuntimeVerificationSpec
  use int.Int
  use seq.Seq
  use mach.java.lang.Integer
  use proofs.ordre_appel.seq_voeux.SeqVoeuxGroupe
  use proofs.ordre_appel.seq_voeux.SeqVoeuxEqUpToRangAppel

  use proofs.ordre_appel.properties.rv_p1.RuntimeVerificationSpecP1 as P1
  use proofs.ordre_appel.properties.rv_p2.RuntimeVerificationSpecP2 as P2
  use proofs.ordre_appel.properties.rv_p3.RuntimeVerificationSpecP3 as P3
  use proofs.ordre_appel.properties.rv_p4.RuntimeVerificationSpecP4 as P4
  use proofs.ordre_appel.properties.rv_p5.RuntimeVerificationSpecP5 as P5

  use fr.parcoursup.whyml.ordreappel.algo.algo_ordre_appel_sortie.AlgoOrdreAppelSortie as AOAS
  use fr.parcoursup.whyml.ordreappel.algo.algo_ordre_appel_entree.AlgoOrdreAppelEntree as AOAE
  use fr.parcoursup.whyml.ordreappel.algo.groupe_classement_valide.GroupeClassementValide

  predicate grp_eq_up_to_rang_appel (grp1 : t) (grp2 : t) =
    get_c_gp_cod grp1 = get_c_gp_cod grp2 /\
    get_taux_min_boursiers_pourcents grp1 = get_taux_min_boursiers_pourcents grp2 /\
    get_taux_min_du_secteur_pourcents grp1 = get_taux_min_du_secteur_pourcents grp2 /\
    get_nb_voeux_classes grp1 = get_nb_voeux_classes grp2 /\
    seq_voeu_eq_up_to_rang_appel (get_ordre_pedagogique grp1) (get_ordre_pedagogique grp2)

  predicate donnees_entree_eq_sortie (entree : seq GroupeClassementValide.t) (sortie : seq GroupeClassementValide.t) =
    Seq.length entree = Seq.length sortie /\
    forall i. 0 <= i < Seq.length sortie -> exists j. 0 <= j < Seq.length entree &&
      grp_eq_up_to_rang_appel entree[j] sortie[i]

  predicate group_satisfies_specs (grp : GroupeClassementValide.t) =
    seq_rangs_appel_ge_1 grp /\
    seq_rangs_appel_uniques grp /\
    P1.spec grp /\
    P2.spec grp /\
    P3.spec grp /\
    P4.spec grp /\
    P5.spec grp

  predicate groups_satisfy_specs_loc (sortie : seq GroupeClassementValide.t) (i : int) =
    forall k. 0 <= k < i -> group_satisfies_specs sortie[k]

  predicate groups_satisfy_specs (sortie : seq GroupeClassementValide.t) =
    groups_satisfy_specs_loc sortie (Seq.length sortie)

end

module RuntimeVerificationSpec_Lemmas
  use proofs.ordre_appel.specs.GroupeClassementValideProperties
  use proofs.ordre_appel.properties.rv_p1.RuntimeVerificationSpecP1_Lemmas as P1
  use proofs.ordre_appel.properties.rv_p2.RuntimeVerificationSpecP2_Lemmas as P2
  use proofs.ordre_appel.properties.rv_p3.RuntimeVerificationSpecP3_Lemmas as P3
  use proofs.ordre_appel.properties.rv_p4.RuntimeVerificationSpecP4_Lemmas as P4
  use proofs.ordre_appel.properties.rv_p5.RuntimeVerificationSpecP5_Lemmas as P5

  use fr.parcoursup.whyml.ordreappel.algo.groupe_classement_valide.GroupeClassementValide
  use export RuntimeVerificationSpec

  let lemma spec_imply_rv  (grp : GroupeClassementValide.t)
    requires { ordre_appel_properties grp }
    requires { ordre_appel_contiguous grp }
    ensures { group_satisfies_specs grp }
  = ()
end

(* generated on Thu Nov 21 02:04:27 UTC 2024 from rev:  *)

Generated by why3doc 1.7.2+git