# > | = ~ @ ?

Prøvning af grundlovsmodellen

Prøvningen holder ordlyd, kildemodel og fortolkning adskilt. Et bestået scenarie viser, at den valgte model giver det angivne resultat; det gør ikke fortolkningen til gældende ret.

Ordlyd
Den officielle tekst, bevaret ordret ved hver bestemmelse.
Kildemodel
De relationer og retsvirkninger, som ordlyden udtrykkeligt bærer.
Fortolkning
En navngiven forståelse med synlige forudsætninger og uden skjult standardvalg.
Prøvning
Scenarier og egenskaber med et erklæret omfang og en tydelig afgrænsning.
Strukturerede metadata

Fund i den aktive model

Oplysningerne nedenfor er genereret fra de metadata, som er knyttet direkte til prøvnings- og fortolkningskoden.

Tekstnær kontrol · Udtømmende lukket domæne

§ 3: den kanoniske magtfordeling

Modellag
Kildemodel

Resultat

Alle tre værdier i Statsmagt har den tekstnære placering, og afledte deltageropslag er konsistente.

Afgrænsning

Kontrollen beskriver Grundlovens ordlyd og ikke den nutidige praktiske magtudøvelse.

Programhenvisninger

statsmagtens_placeringstatsorgan_deltager_istatsmagt_udøves_i_forening

Modelresultat · Grænseanalyse

Proceduregrænser i §§ 42, 73 og 88

Modellag
Kildemodel

Resultat

De tre procedurer bevarer hver sin stemmeretning, frist og tærskel, inklusive forskellen mellem strengt flertal og mindst-krav.

Afgrænsning

Kontrollen sammenligner de kodede grænser; den rangordner ikke procedurerne retligt.

Programhenvisninger

lovforslag_forkastet_ved_folkeafstemningEkspropriationsudsættelsesbegæring::opfylder_par73_stk2Grundlovsafstemningsresultat::opfylder_godkendelseskravet_i_par88

Tekstnær kontrol · Udtømmende lukket domæne

§ 85: udtrykkeligt nævnte frihedsbestemmelser

Modellag
Kildemodel

Resultat

§ 85 nævner §§ 71, 78 og 79, mens § 77 ikke er en del af bestemmelsens henvisning.

Afgrænsning

Den manglende henvisning til § 77 etablerer ikke i sig selv en positiv, ubegrænset militær ytringsret.

Programhenvisninger

MilitærIndskrænkning::bestemmelsen_er_omfattet_af_ordlydens_henvisning_i_par85MilitærIndskrænkning::indskrænkning_har_hjemmel_i_par85

Modelresultat · Grænseanalyse

§§ 42 og 88: forskellige folkeafstemningsmekanismer

Modellag
Kildemodel

Resultat

Samme stemmetal kan forkaste et almindeligt lovforslag efter § 42 uden at godkende en grundlovsændring efter § 88.

Afgrænsning

Resultatet viser forskellige tekstlige tærskler og stemmeretninger, ikke at den ene procedure er stærkere.

Programhenvisninger

lovforslag_forkastet_ved_folkeafstemningGrundlovsafstemningsresultat::opfylder_godkendelseskravet_i_par88

Fortolkningsspørgsmål · Scenariesamling

§§ 6 og 70: troskrav og adgang til kongeembedet

Modellag
Fortolkningsmodel: To konkurrerende fortolkninger af §§ 6 og 70

Resultat

En ikke-luthersk kandidat afvises i særregelmodellen, mens ligebehandlingsmodellen blotlægger en normkonflikt.

Afgrænsning

Prøvningen afgør ikke, hvilken fortolkning der er gældende ret; der er ikke tilføjet supplerende retskilder.

Forudsætninger

  • Særregelmodellen behandler § 6 som den særlige regel for kongeembedet.
  • Ligebehandlingsmodellen antager, at adgang til kongeembedet er en politisk rettighed efter § 70.

Programhenvisninger

kongens_påkrævede_trossamfundmonark_opfylder_troskravPar70Sag::opfylder_par70troskravsudfald

Fortolkningsspørgsmål · Udtømmende lukket domæne

§§ 43 og 73: skat eller ekspropriation

Modellag
Fortolkningsmodel: To konkurrerende kvalifikationshypoteser for økonomiske byrder

Resultat

En byrde med begge kendetegn klassificeres forskelligt i de to arbejdshypoteser.

Afgrænsning

Prøvningen opstiller ingen gældende grænse mellem skat og ekspropriation og afgør ikke virkningen af en bestemt skattesats.

Forudsætninger

  • Den formelle arbejdshypotese prioriterer lovgivningens betegnelse.
  • Den materielle arbejdshypotese prioriterer afståelse af bestemt ejendom.

Programhenvisninger

skattehandling_kræver_lovEkspropriationssag::opfylder_par73_stk1klassificer_økonomisk_byrde
Aktivt korpus

Fortolkninger, scenarier og prøvninger

Koden nedenfor er den samme kode, som metadatafundene henviser til, og som den samlede prøvningsindgang kører.

Fælles grundlag for fortolkningsmodeller

@ sprog da

@ importer ../grundlov - proevning - faelles

-- Fortolkningsmetadata beskriver et fund uden at gøre det til en del af
-- kildemodellen. En retskildestøttet konklusion kræver særskilte kilder.

Fortolkning af troskrav og ligebehandling

@ sprog da

@ importer ../kapitel - 02
@ importer ../kapitel - 07
@ importer ./grundlov - fortolkning - faelles

-- § 6 opstiller et troskrav til kongen. § 70 forbyder trosbaseret berøvelse
-- af borgerlige og politiske rettigheder. Om adgang til kongeembedet er en
-- politisk rettighed efter § 70, afgøres ikke af ordlyden alene.

# Troskravsfortolkning = Par6SomSærregelForKongeembedet | Par70OmfatterAdgangTilKongeembedet
# Troskravsudfald = OpfylderTroskravetIPar6 | AfvistEfterPar6SomSærregel | ÅbenNormkonfliktMellemPar6OgPar70

| troskravsudfald(fortolkning: Troskravsfortolkning, kandidat: Monark) -> hvis monark_opfylder_troskrav(kandidat) {
    OpfylderTroskravetIPar6
} ellers {
    match fortolkning {
        | Par6SomSærregelForKongeembedet -> AfvistEfterPar6SomSærregel
        | Par70OmfatterAdgangTilKongeembedet -> ÅbenNormkonfliktMellemPar6OgPar70
    }
}

= troskrav_og_ligebehandling_fund = GrundlovPrøvningsfund(
    titel = "§§ 6 og 70: troskrav og adgang til kongeembedet",
    modellag = Fortolkningsmodel(navn = "To konkurrerende fortolkninger af §§ 6 og 70"),
    udsagnsstatus = Fortolkningsspørgsmål,
    prøvningsomfang = Scenariesamling,
    programhenvisninger = [
        refof(kongens_påkrævede_trossamfund),
        refof(monark_opfylder_troskrav),
        refof(Par70Sag::opfylder_par70),
        refof(troskravsudfald)
    ],
    grundlag = Fortolkningsgrundlag(
        kilder = [grundlov_retsinformation],
        forudsætninger = [
            "Særregelmodellen behandler § 6 som den særlige regel for kongeembedet.",
            "Ligebehandlingsmodellen antager, at adgang til kongeembedet er en politisk rettighed efter § 70."
        ]
    ),
    resultat = "En ikke-luthersk kandidat afvises i særregelmodellen, mens ligebehandlingsmodellen blotlægger en normkonflikt.",
    afgrænsning = "Prøvningen afgør ikke, hvilken fortolkning der er gældende ret; der er ikke tilføjet supplerende retskilder."
)

--@label:fortolkning_troskrav_og_ligebehandling::meta:troskrav_og_ligebehandling_fund--
--@begin:fortolkning_troskrav_og_ligebehandling--
| troskravsfortolkningerne_er_eksplicit_adskilte() -> Par6SomSærregelForKongeembedet != Par70OmfatterAdgangTilKongeembedet
--@end:fortolkning_troskrav_og_ligebehandling--

Fortolkning af skat og ekspropriation

@ sprog da

@ importer ../kapitel - 05
@ importer ../kapitel - 08
@ importer ./grundlov - fortolkning - faelles

-- §§ 43 og 73 opstiller forskellige retsfølger, men ordlyden leverer ikke en
-- klassifikationsregel for en økonomisk byrde, der har kendetegn fra begge.

# Byrdekvalifikationsfortolkning = FormelBetegnelseFørMaterielleKendetegn | MaterielleKendetegnFørFormelBetegnelse
# ØkonomiskByrdeklassifikation = SkatEfterArbejdshypotese | EkspropriationEfterArbejdshypotese | UafklaretEfterArbejdshypotese
# ØkonomiskByrde(angivet_som_skat: Boolsk, kræver_afståelse_af_bestemt_ejendom: Boolsk)

| klassificer_økonomisk_byrde(fortolkning: Byrdekvalifikationsfortolkning, byrde: ØkonomiskByrde) -> match fortolkning {
    | FormelBetegnelseFørMaterielleKendetegn -> hvis byrde.angivet_som_skat {
        SkatEfterArbejdshypotese
    } ellers hvis byrde.kræver_afståelse_af_bestemt_ejendom {
        EkspropriationEfterArbejdshypotese
    } ellers {
        UafklaretEfterArbejdshypotese
    }
    | MaterielleKendetegnFørFormelBetegnelse -> hvis byrde.kræver_afståelse_af_bestemt_ejendom {
        EkspropriationEfterArbejdshypotese
    } ellers hvis byrde.angivet_som_skat {
        SkatEfterArbejdshypotese
    } ellers {
        UafklaretEfterArbejdshypotese
    }
}

= skat_og_ekspropriation_fund = GrundlovPrøvningsfund(
    titel = "§§ 43 og 73: skat eller ekspropriation",
    modellag = Fortolkningsmodel(navn = "To konkurrerende kvalifikationshypoteser for økonomiske byrder"),
    udsagnsstatus = Fortolkningsspørgsmål,
    prøvningsomfang = UdtømmendeLukketDomæne,
    programhenvisninger = [
        refof(skattehandling_kræver_lov),
        refof(Ekspropriationssag::opfylder_par73_stk1),
        refof(klassificer_økonomisk_byrde)
    ],
    grundlag = Fortolkningsgrundlag(
        kilder = [grundlov_retsinformation],
        forudsætninger = [
            "Den formelle arbejdshypotese prioriterer lovgivningens betegnelse.",
            "Den materielle arbejdshypotese prioriterer afståelse af bestemt ejendom."
        ]
    ),
    resultat = "En byrde med begge kendetegn klassificeres forskelligt i de to arbejdshypoteser.",
    afgrænsning = "Prøvningen opstiller ingen gældende grænse mellem skat og ekspropriation og afgør ikke virkningen af en bestemt skattesats."
)

--@label:fortolkning_skat_og_ekspropriation::meta:skat_og_ekspropriation_fund--
--@begin:fortolkning_skat_og_ekspropriation--
| byrdekvalifikationsfortolkningerne_er_eksplicit_adskilte() -> FormelBetegnelseFørMaterielleKendetegn != MaterielleKendetegnFørFormelBetegnelse
--@end:fortolkning_skat_og_ekspropriation--

Scenarier med eksplicitte fortolkningsvalg

@ sprog da

@ importer ./fortolkninger / troskrav - og - ligebehandling.fortolkning
@ importer ./fortolkninger / skat - og - ekspropriation.fortolkning

-- Hvert scenarie vælger sin fortolkning udtrykkeligt. Ingen model vinder på
-- grund af importorden eller et skjult standardvalg.

= luthersk_kandidat_til_kongeembedet = Monark(
    alder = 30,
    trossamfund = EvangeliskLuthersk,
    forsikring = AfgivetSomTronfølger
)
= ikke_luthersk_kandidat_til_kongeembedet = Monark(
    alder = 30,
    trossamfund = Andet(navn = "Muslim"),
    forsikring = AfgivetSomTronfølger
)

= luthersk_udfald_i_særregelmodellen = troskravsudfald(
    fortolkning = Par6SomSærregelForKongeembedet,
    kandidat = luthersk_kandidat_til_kongeembedet
)
= luthersk_udfald_i_ligebehandlingsmodellen = troskravsudfald(
    fortolkning = Par70OmfatterAdgangTilKongeembedet,
    kandidat = luthersk_kandidat_til_kongeembedet
)
= ikke_luthersk_udfald_i_særregelmodellen = troskravsudfald(
    fortolkning = Par6SomSærregelForKongeembedet,
    kandidat = ikke_luthersk_kandidat_til_kongeembedet
)
= ikke_luthersk_udfald_i_ligebehandlingsmodellen = troskravsudfald(
    fortolkning = Par70OmfatterAdgangTilKongeembedet,
    kandidat = ikke_luthersk_kandidat_til_kongeembedet
)

= trosbaseret_adgangsafslag_som_politisk_rettighed = Par70Sag(
    grund = Trosbekendelse,
    virkning = BerøvelseAfRettighed(rettighed = PolitiskRettighed),
    virkningen_sker_på_grund_af_grunden = Sandt
)

= ikke_luthersk_kandidat_opfylder_troskravet = monark_opfylder_troskrav(ikke_luthersk_kandidat_til_kongeembedet)
= trosbaseret_adgangsafslag_opfylder_par70 = trosbaseret_adgangsafslag_som_politisk_rettighed.opfylder_par70()

| luthersk_kandidat_har_samme_udfald_i_begge_modeller: luthersk_udfald_i_særregelmodellen -> (
    luthersk_udfald_i_særregelmodellen == OpfylderTroskravetIPar6
    && luthersk_udfald_i_ligebehandlingsmodellen == OpfylderTroskravetIPar6
)
| ikke_luthersk_kandidat_synliggør_fortolkningsvalget: ikke_luthersk_udfald_i_særregelmodellen -> (
    ikke_luthersk_udfald_i_særregelmodellen == AfvistEfterPar6SomSærregel
    && ikke_luthersk_udfald_i_ligebehandlingsmodellen == ÅbenNormkonfliktMellemPar6OgPar70
)
| kildereglerne_giver_to_ordlydsnære_resultater: ikke_luthersk_kandidat_opfylder_troskravet -> (
    ikke_luthersk_kandidat_opfylder_troskravet == Falskt
    && trosbaseret_adgangsafslag_opfylder_par70 == Falskt
)

= byrde_med_begge_kendetegn = ØkonomiskByrde(
    angivet_som_skat = Sandt,
    kræver_afståelse_af_bestemt_ejendom = Sandt
)
= byrde_kun_angivet_som_skat = ØkonomiskByrde(
    angivet_som_skat = Sandt,
    kræver_afståelse_af_bestemt_ejendom = Falskt
)
= byrde_kun_med_afståelse = ØkonomiskByrde(
    angivet_som_skat = Falskt,
    kræver_afståelse_af_bestemt_ejendom = Sandt
)
= byrde_uden_kendetegn = ØkonomiskByrde(
    angivet_som_skat = Falskt,
    kræver_afståelse_af_bestemt_ejendom = Falskt
)

= byrde_med_begge_formelt_udfald = klassificer_økonomisk_byrde(
    fortolkning = FormelBetegnelseFørMaterielleKendetegn,
    byrde = byrde_med_begge_kendetegn
)
= byrde_med_begge_materielt_udfald = klassificer_økonomisk_byrde(
    fortolkning = MaterielleKendetegnFørFormelBetegnelse,
    byrde = byrde_med_begge_kendetegn
)
= byrde_kun_skat_formelt_udfald = klassificer_økonomisk_byrde(
    fortolkning = FormelBetegnelseFørMaterielleKendetegn,
    byrde = byrde_kun_angivet_som_skat
)
= byrde_kun_skat_materielt_udfald = klassificer_økonomisk_byrde(
    fortolkning = MaterielleKendetegnFørFormelBetegnelse,
    byrde = byrde_kun_angivet_som_skat
)
= byrde_kun_afståelse_formelt_udfald = klassificer_økonomisk_byrde(
    fortolkning = FormelBetegnelseFørMaterielleKendetegn,
    byrde = byrde_kun_med_afståelse
)
= byrde_kun_afståelse_materielt_udfald = klassificer_økonomisk_byrde(
    fortolkning = MaterielleKendetegnFørFormelBetegnelse,
    byrde = byrde_kun_med_afståelse
)
= byrde_uden_kendetegn_formelt_udfald = klassificer_økonomisk_byrde(
    fortolkning = FormelBetegnelseFørMaterielleKendetegn,
    byrde = byrde_uden_kendetegn
)
= byrde_uden_kendetegn_materielt_udfald = klassificer_økonomisk_byrde(
    fortolkning = MaterielleKendetegnFørFormelBetegnelse,
    byrde = byrde_uden_kendetegn
)

| byrde_med_begge_kendetegn_synliggør_fortolkningsvalget: byrde_med_begge_formelt_udfald -> (
    byrde_med_begge_formelt_udfald == SkatEfterArbejdshypotese
    && byrde_med_begge_materielt_udfald == EkspropriationEfterArbejdshypotese
)
| entydige_skattekendetegn_giver_samme_udfald: byrde_kun_skat_formelt_udfald -> (
    byrde_kun_skat_formelt_udfald == SkatEfterArbejdshypotese
    && byrde_kun_skat_materielt_udfald == SkatEfterArbejdshypotese
)
| entydige_ekspropriationskendetegn_giver_samme_udfald: byrde_kun_afståelse_formelt_udfald -> (
    byrde_kun_afståelse_formelt_udfald == EkspropriationEfterArbejdshypotese
    && byrde_kun_afståelse_materielt_udfald == EkspropriationEfterArbejdshypotese
)
| fravær_af_kendetegn_forbliver_uafklaret: byrde_uden_kendetegn_formelt_udfald -> (
    byrde_uden_kendetegn_formelt_udfald == UafklaretEfterArbejdshypotese
    && byrde_uden_kendetegn_materielt_udfald == UafklaretEfterArbejdshypotese
)

? luthersk_kandidat_har_samme_udfald_i_begge_modeller
? ikke_luthersk_kandidat_synliggør_fortolkningsvalget
? kildereglerne_giver_to_ordlydsnære_resultater
? byrde_med_begge_kendetegn_synliggør_fortolkningsvalget
? entydige_skattekendetegn_giver_samme_udfald
? entydige_ekspropriationskendetegn_giver_samme_udfald
? fravær_af_kendetegn_forbliver_uafklaret

@ skriv("De navngivne fortolkningsscenarier holder.")

Prøvning af bestemmelser

@ sprog da

@ importer ./kapitel - 01
@ importer ./kapitel - 02
@ importer ./kapitel - 04
@ importer ./kapitel - 08
@ importer ./kapitel - 09
@ importer ./kapitel - 11
@ importer ./grundlov - proevning - faelles

-- Bestemmelsesprøvningen prøver lukkede, ordlydsnære domæner. Konkrete
-- livsforløb og hypotetiske personer hører til scenariefilerne.

= bestemmelser_magtfordeling_fund = GrundlovPrøvningsfund(
    titel = "§ 3: den kanoniske magtfordeling",
    modellag = Kildemodel,
    udsagnsstatus = TekstnærKontrol,
    prøvningsomfang = UdtømmendeLukketDomæne,
    programhenvisninger = [
        refof(statsmagtens_placering),
        refof(statsorgan_deltager_i),
        refof(statsmagt_udøves_i_forening)
    ],
    grundlag = Fortolkningsgrundlag(
        kilder = [grundlov_retsinformation],
        forudsætninger = []
    ),
    resultat = "Alle tre værdier i Statsmagt har den tekstnære placering, og afledte deltageropslag er konsistente.",
    afgrænsning = "Kontrollen beskriver Grundlovens ordlyd og ikke den nutidige praktiske magtudøvelse."
)

--@label:audit_bestemmelser_magtfordeling::meta:bestemmelser_magtfordeling_fund--
--@begin:audit_bestemmelser_magtfordeling--
| bestemmelser_magtfordelingen_er_udtømmende_og_konsistent() -> {
    = lovgivende_placering = Magtplacering(
        magt = Lovgivende,
        udøvelse = IForening(
            organ = KongenSomStatsorgan,
            medorgan = Folketinget
        )
    )
    = udøvende_placering = Magtplacering(
        magt = Udøvende,
        udøvelse = Hos(organ = KongenSomStatsorgan)
    )
    = dømmende_placering = Magtplacering(
        magt = Dømmende,
        udøvelse = Hos(organ = Domstolene)
    )
    (
        statsmagtens_placering(Lovgivende) == lovgivende_placering
        && statsmagtens_placering(Udøvende) == udøvende_placering
        && statsmagtens_placering(Dømmende) == dømmende_placering
        && statsorgan_deltager_i(KongenSomStatsorgan, Lovgivende)
        && statsorgan_deltager_i(Folketinget, Lovgivende)
        && statsorgan_deltager_i(Domstolene, Lovgivende) == Falskt
        && statsmagt_udøves_i_forening(Lovgivende)
        && statsmagt_udøves_i_forening(Udøvende) == Falskt
        && statsmagt_udøves_i_forening(Dømmende) == Falskt
    )
}
--@end:audit_bestemmelser_magtfordeling--

| bestemmelser_par1_omfatter_hele_det_lukkede_rigsdomæne() -> grundloven_gælder_for(Danmark) && grundloven_gælder_for(Færøerne) && grundloven_gælder_for(Grønland)

| bestemmelser_par6_bevarer_det_formulerede_troskrav() -> {
    = monark_i_folkekirkens_trossamfund = Monark(
        alder = 18,
        trossamfund = EvangeliskLuthersk,
        forsikring = IkkeAfgivet
    )
    = monark_i_andet_trossamfund = Monark(
        alder = 18,
        trossamfund = Andet(navn = "Andet trossamfund"),
        forsikring = IkkeAfgivet
    )
    (
        troskravet_er_formuleret_for_kongen()
        && kongens_påkrævede_trossamfund() == EvangeliskLuthersk
        && monark_opfylder_troskrav(monark_i_folkekirkens_trossamfund)
        && monark_opfylder_troskrav(monark_i_andet_trossamfund) == Falskt
    )
}

| bestemmelser_par7_har_samme_myndighedsgrænse_for_begge_subjekter() -> {
    = mindreårig_monark = Monark(
        alder = 17,
        trossamfund = EvangeliskLuthersk,
        forsikring = IkkeAfgivet
    )
    = myndig_monark = Monark(
        alder = 18,
        trossamfund = EvangeliskLuthersk,
        forsikring = IkkeAfgivet
    )
    = mindreårig_tronfølger = Tronfølger(
        alder = 17,
        trossamfund = EvangeliskLuthersk,
        forsikring = IkkeAfgivet
    )
    = myndig_tronfølger = Tronfølger(
        alder = 18,
        trossamfund = EvangeliskLuthersk,
        forsikring = IkkeAfgivet
    )
    (
        myndighedsregel_gælder_for(KongenSomMyndighedssubjekt)
        && myndighedsregel_gælder_for(TronfølgerenSomMyndighedssubjekt)
        && monark_er_myndig(mindreårig_monark) == Falskt
        && monark_er_myndig(myndig_monark)
        && tronfølger_er_myndig(mindreårig_tronfølger) == Falskt
        && tronfølger_er_myndig(myndig_tronfølger)
    )
}

| bestemmelser_par28_bevarer_mandattallene() -> folketingets_max_medlemmer == 179 && færøske_mandater == 2 && grønlandske_mandater == 2

| bestemmelser_par85_henviser_udtømmende_til_tre_bestemmelser() -> {
    = personlig_frihed = MilitærIndskrænkning(
        bestemmelse = PersonligFrihedPar71,
        følger_af_militære_loves_forskrifter = Sandt
    )
    = foreningsfrihed = MilitærIndskrænkning(
        bestemmelse = ForeningsfrihedPar78,
        følger_af_militære_loves_forskrifter = Sandt
    )
    = forsamlingsfrihed = MilitærIndskrænkning(
        bestemmelse = ForsamlingsfrihedPar79,
        følger_af_militære_loves_forskrifter = Sandt
    )
    = ytringsfrihed = MilitærIndskrænkning(
        bestemmelse = YtringsfrihedPar77,
        følger_af_militære_loves_forskrifter = Sandt
    )
    (
        personlig_frihed.bestemmelsen_er_omfattet_af_ordlydens_henvisning_i_par85()
        && foreningsfrihed.bestemmelsen_er_omfattet_af_ordlydens_henvisning_i_par85()
        && forsamlingsfrihed.bestemmelsen_er_omfattet_af_ordlydens_henvisning_i_par85()
        && ytringsfrihed.bestemmelsen_er_omfattet_af_ordlydens_henvisning_i_par85() == Falskt
    )
}

| bestemmelser_par86_dækker_begge_rådstyper_og_alle_rigsdele() -> {
    = dansk_kommunalvalg = Rådsvalgretsalder(rigsdel = Danmark, råd = KommunaltRåd)
    = dansk_menighedsrådsvalg = Rådsvalgretsalder(rigsdel = Danmark, råd = Menighedsråd)
    = færøsk_kommunalvalg = Rådsvalgretsalder(rigsdel = Færøerne, råd = KommunaltRåd)
    = færøsk_menighedsrådsvalg = Rådsvalgretsalder(rigsdel = Færøerne, råd = Menighedsråd)
    = grønlandsk_kommunalvalg = Rådsvalgretsalder(rigsdel = Grønland, råd = KommunaltRåd)
    = grønlandsk_menighedsrådsvalg = Rådsvalgretsalder(rigsdel = Grønland, råd = Menighedsråd)
    (
        dansk_kommunalvalg.retsgrundlag_efter_par86() == FølgerFolketingsvalgretsalderenTilEnhverTid
        && dansk_menighedsrådsvalg.retsgrundlag_efter_par86() == FølgerFolketingsvalgretsalderenTilEnhverTid
        && færøsk_kommunalvalg.retsgrundlag_efter_par86() == FastsættesVedLovEllerIHEnholdTilLov
        && færøsk_menighedsrådsvalg.retsgrundlag_efter_par86() == FastsættesVedLovEllerIHEnholdTilLov
        && grønlandsk_kommunalvalg.retsgrundlag_efter_par86() == FastsættesVedLovEllerIHEnholdTilLov
        && grønlandsk_menighedsrådsvalg.retsgrundlag_efter_par86() == FastsættesVedLovEllerIHEnholdTilLov
    )
}

| bestemmelser_stadfæstelsesakten_er_kanonisk() -> {
    = stadfæstelsesdato = Dato(år = 1953, måned = 6, dag = 5)
    (
        grundlovens_stadfæstelse.opfylder_stadfæstelsesteksten()
        && grundlovens_stadfæstelse.dato == stadfæstelsesdato
        && grundlovens_stadfæstelse.sted == ChristiansborgSlot
        && grundlovens_stadfæstelse.monark == FrederikDenNiende
    )
}

| bestemmelser_audit_består() -> (
    bestemmelser_magtfordelingen_er_udtømmende_og_konsistent()
    && bestemmelser_par1_omfatter_hele_det_lukkede_rigsdomæne()
    && bestemmelser_par6_bevarer_det_formulerede_troskrav()
    && bestemmelser_par7_har_samme_myndighedsgrænse_for_begge_subjekter()
    && bestemmelser_par28_bevarer_mandattallene()
    && bestemmelser_par85_henviser_udtømmende_til_tre_bestemmelser()
    && bestemmelser_par86_dækker_begge_rådstyper_og_alle_rigsdele()
    && bestemmelser_stadfæstelsesakten_er_kanonisk()
)

= bestemmelser_audit_resultat = bestemmelser_audit_består()
| bestemmelser_audit_holder: bestemmelser_audit_resultat -> bestemmelser_audit_resultat == Sandt

? bestemmelser_audit_holder

Prøvning af procedurer

@ sprog da

@ importer ./kapitel - 02
@ importer ./kapitel - 03
@ importer ./kapitel - 05
@ importer ./kapitel - 06
@ importer ./kapitel - 08
@ importer ./kapitel - 10
@ importer ./grundlov - proevning - faelles

-- Procedureprøvningen prøver samtykke, konsistente tællinger, strenge og
-- inklusive tærskler samt forskellen mellem udløser, forløb og retsvirkning.

= procedurer_taerskler_fund = GrundlovPrøvningsfund(
    titel = "Proceduregrænser i §§ 42, 73 og 88",
    modellag = Kildemodel,
    udsagnsstatus = Modelresultat,
    prøvningsomfang = Grænseanalyse,
    programhenvisninger = [
        refof(lovforslag_forkastet_ved_folkeafstemning),
        refof(Ekspropriationsudsættelsesbegæring::opfylder_par73_stk2),
        refof(Grundlovsafstemningsresultat::opfylder_godkendelseskravet_i_par88)
    ],
    grundlag = Fortolkningsgrundlag(
        kilder = [grundlov_retsinformation],
        forudsætninger = []
    ),
    resultat = "De tre procedurer bevarer hver sin stemmeretning, frist og tærskel, inklusive forskellen mellem strengt flertal og mindst-krav.",
    afgrænsning = "Kontrollen sammenligner de kodede grænser; den rangordner ikke procedurerne retligt."
)

| procedurer_samtykke_er_positivt_og_manglende_samtykke_negativt() -> {
    = anden_person = AndenPerson(
        kongen_finder_forbrydelsen_særdeles_farlig_for_staten = Sandt
    )
    = rigsretssag_med_samtykke = Rigsretssag(
        tiltaler = KongenSomRigsretstiltaler,
        tiltalt = anden_person,
        folketingets_samtykke = Givet
    )
    = rigsretssag_uden_samtykke = Rigsretssag(
        tiltaler = KongenSomRigsretstiltaler,
        tiltalt = anden_person,
        folketingets_samtykke = IkkeGivet
    )
    (
        regent_i_udlandet(Givet)
        && regent_i_udlandet(IkkeGivet) == Falskt
        && årpenge_i_udlandet(Givet)
        && årpenge_i_udlandet(IkkeGivet) == Falskt
        && benådning_af_rigsretsdømt_minister_opfylder_par24(Givet)
        && benådning_af_rigsretsdømt_minister_opfylder_par24(IkkeGivet) == Falskt
        && rigsretssag_med_samtykke.kan_påkendes_efter_par60()
        && rigsretssag_uden_samtykke.kan_påkendes_efter_par60() == Falskt
    )
}

| procedurer_fælles_medlemstærskler_validerer_optællingen() -> {
    = to_femtedele = Brøk(tæller = 2, nævner = 5)
    = en_tredjedel = Brøk(tæller = 1, nævner = 3)
    = tooghalvfjerds_medlemmer = Medlemsopbakning(antal = 72, medlemmer_i_alt = 179)
    = enoghalvfjerds_medlemmer = Medlemsopbakning(antal = 71, medlemmer_i_alt = 179)
    = tres_medlemmer = Medlemsopbakning(antal = 60, medlemmer_i_alt = 179)
    = nioghalvtreds_medlemmer = Medlemsopbakning(antal = 59, medlemmer_i_alt = 179)
    = umulig_opbakning = Medlemsopbakning(antal = 180, medlemmer_i_alt = 179)
    (
        medlemsopbakning_er_mindst(tooghalvfjerds_medlemmer, to_femtedele)
        && medlemsopbakning_er_mindst(enoghalvfjerds_medlemmer, to_femtedele) == Falskt
        && medlemsopbakning_er_mindst(tres_medlemmer, en_tredjedel)
        && medlemsopbakning_er_mindst(nioghalvtreds_medlemmer, en_tredjedel) == Falskt
        && medlemsopbakning_er_mindst(umulig_opbakning, en_tredjedel) == Falskt
    )
}

--@label:audit_procedurer_taerskler::meta:procedurer_taerskler_fund--
--@begin:audit_procedurer_taerskler--
| procedurer_par42_har_strengt_flertal_og_inklusiv_tredive_procent() -> {
    = forkastet = Folkeafstemningsresultat(
        mod_stemmer = 30,
        deltagende = 59,
        stemmeberettigede = 100
    )
    = ikke_strengt_flertal = Folkeafstemningsresultat(
        mod_stemmer = 30,
        deltagende = 60,
        stemmeberettigede = 100
    )
    = under_tredive_procent = Folkeafstemningsresultat(
        mod_stemmer = 29,
        deltagende = 57,
        stemmeberettigede = 100
    )
    (
        lovforslag_forkastet_ved_folkeafstemning(forkastet)
        && lovforslag_forkastet_ved_folkeafstemning(ikke_strengt_flertal) == Falskt
        && lovforslag_forkastet_ved_folkeafstemning(under_tredive_procent) == Falskt
    )
}

| procedurer_par73_har_inklusiv_tredjedel_og_tre_soegnedage() -> {
    = rettidig_tredjedel = Ekspropriationsudsættelsesbegæring(
        lovforslag_vedrører_ekspropriation_af_ejendom = Sandt,
        lovforslag_endeligt_vedtaget = Sandt,
        opbakning = Medlemsopbakning(antal = 60, medlemmer_i_alt = 179),
        søgnedage_efter_endelig_vedtagelse = 3
    )
    = under_tredjedel = Ekspropriationsudsættelsesbegæring(
        lovforslag_vedrører_ekspropriation_af_ejendom = Sandt,
        lovforslag_endeligt_vedtaget = Sandt,
        opbakning = Medlemsopbakning(antal = 59, medlemmer_i_alt = 179),
        søgnedage_efter_endelig_vedtagelse = 3
    )
    = for_sen_begæring = Ekspropriationsudsættelsesbegæring(
        lovforslag_vedrører_ekspropriation_af_ejendom = Sandt,
        lovforslag_endeligt_vedtaget = Sandt,
        opbakning = Medlemsopbakning(antal = 60, medlemmer_i_alt = 179),
        søgnedage_efter_endelig_vedtagelse = 4
    )
    (
        rettidig_tredjedel.opfylder_par73_stk2()
        && under_tredjedel.opfylder_par73_stk2() == Falskt
        && for_sen_begæring.opfylder_par73_stk2() == Falskt
    )
}

| procedurer_par88_har_strengt_flertal_og_inklusiv_fyrre_procent() -> {
    = godkendt = Grundlovsafstemningsresultat(
        for_stemmer = 40,
        deltagende = 79,
        stemmeberettigede = 100
    )
    = ikke_strengt_flertal = Grundlovsafstemningsresultat(
        for_stemmer = 40,
        deltagende = 80,
        stemmeberettigede = 100
    )
    = under_fyrre_procent = Grundlovsafstemningsresultat(
        for_stemmer = 39,
        deltagende = 77,
        stemmeberettigede = 100
    )
    = umuligt_stemmetal = Grundlovsafstemningsresultat(
        for_stemmer = 101,
        deltagende = 100,
        stemmeberettigede = 100
    )
    (
        godkendt.opfylder_godkendelseskravet_i_par88()
        && ikke_strengt_flertal.opfylder_godkendelseskravet_i_par88() == Falskt
        && under_fyrre_procent.opfylder_godkendelseskravet_i_par88() == Falskt
        && umuligt_stemmetal.opfylder_godkendelseskravet_i_par88() == Falskt
    )
}
--@end:audit_procedurer_taerskler--

| procedurer_par88_adskiller_udloeser_fuldt_forloeb_og_retsvirkning() -> {
    = udløsende_forslagsforløb = Grundlovsforslagsforløb(
        første_folketing_har_vedtaget = Sandt,
        regeringen_vil_fremme_sagen = Sandt,
        nyvalg_til_folketinget_udskrevet = Falskt,
        det_følgende_folketing_har_vedtaget = Falskt,
        skikkelse_ved_genvedtagelsen = UændretSkikkelse
    )
    = fuldført_forslagsforløb = Grundlovsforslagsforløb(
        første_folketing_har_vedtaget = Sandt,
        regeringen_vil_fremme_sagen = Sandt,
        nyvalg_til_folketinget_udskrevet = Sandt,
        det_følgende_folketing_har_vedtaget = Sandt,
        skikkelse_ved_genvedtagelsen = UændretSkikkelse
    )
    = godkendende_afstemning = Grundlovsafstemning(
        forelæggelsestidspunkt = IndenEtHalvtÅrEfterEndeligVedtagelse,
        forelagt_ved_direkte_afstemning = Sandt,
        resultat = Grundlovsafstemningsresultat(
            for_stemmer = 40,
            deltagende = 79,
            stemmeberettigede = 100
        )
    )
    = ikke_stadfæstet_sag = Grundlovsændringssag(
        forslagsforløb = fuldført_forslagsforløb,
        afstemning = godkendende_afstemning,
        stadfæstet_af_kongen = Falskt
    )
    (
        udløsende_forslagsforløb.udløser_nyvalg_efter_par88()
        && udløsende_forslagsforløb.opfylder_forslagsforløbet_i_par88() == Falskt
        && ikke_stadfæstet_sag.bliver_grundlov_efter_par88() == Falskt
    )
}

| procedurer_audit_består() -> (
    procedurer_samtykke_er_positivt_og_manglende_samtykke_negativt()
    && procedurer_fælles_medlemstærskler_validerer_optællingen()
    && procedurer_par42_har_strengt_flertal_og_inklusiv_tredive_procent()
    && procedurer_par73_har_inklusiv_tredjedel_og_tre_soegnedage()
    && procedurer_par88_har_strengt_flertal_og_inklusiv_fyrre_procent()
    && procedurer_par88_adskiller_udloeser_fuldt_forloeb_og_retsvirkning()
)

= procedurer_audit_resultat = procedurer_audit_består()
| procedurer_audit_holder: procedurer_audit_resultat -> procedurer_audit_resultat == Sandt

? procedurer_audit_holder

Prøvning af rettigheder

@ sprog da

@ importer ./kapitel - 07
@ importer ./kapitel - 08
@ importer ./grundlov - proevning - faelles

-- Rettighedsprøvningen prøver ordlydens personkredse, virkninger, indgreb og
-- udtrykkelige henvisninger uden at udlede rettigheder af tavshed.

= rettigheder_negativ_afgraensning_fund = GrundlovPrøvningsfund(
    titel = "§ 85: udtrykkeligt nævnte frihedsbestemmelser",
    modellag = Kildemodel,
    udsagnsstatus = TekstnærKontrol,
    prøvningsomfang = UdtømmendeLukketDomæne,
    programhenvisninger = [
        refof(MilitærIndskrænkning::bestemmelsen_er_omfattet_af_ordlydens_henvisning_i_par85),
        refof(MilitærIndskrænkning::indskrænkning_har_hjemmel_i_par85)
    ],
    grundlag = Fortolkningsgrundlag(
        kilder = [grundlov_retsinformation],
        forudsætninger = []
    ),
    resultat = "§ 85 nævner §§ 71, 78 og 79, mens § 77 ikke er en del af bestemmelsens henvisning.",
    afgrænsning = "Den manglende henvisning til § 77 etablerer ikke i sig selv en positiv, ubegrænset militær ytringsret."
)

| rettigheder_par67_kraever_overbevisningssammenhaeng_og_begge_graenser() -> {
    = beskyttet_lære = Religionsudøvelse(
        udtryk = Lære,
        stemmer_med_overbevisningen = Sandt,
        strider_mod_sædeligheden = Falskt,
        strider_mod_den_offentlige_orden = Falskt
    )
    = beskyttet_foretagelse = Religionsudøvelse(
        udtryk = Foretagelse,
        stemmer_med_overbevisningen = Sandt,
        strider_mod_sædeligheden = Falskt,
        strider_mod_den_offentlige_orden = Falskt
    )
    = uden_overbevisningssammenhæng = Religionsudøvelse(
        udtryk = Lære,
        stemmer_med_overbevisningen = Falskt,
        strider_mod_sædeligheden = Falskt,
        strider_mod_den_offentlige_orden = Falskt
    )
    = imod_sædeligheden = Religionsudøvelse(
        udtryk = Lære,
        stemmer_med_overbevisningen = Sandt,
        strider_mod_sædeligheden = Sandt,
        strider_mod_den_offentlige_orden = Falskt
    )
    = imod_den_offentlige_orden = Religionsudøvelse(
        udtryk = Foretagelse,
        stemmer_med_overbevisningen = Sandt,
        strider_mod_sædeligheden = Falskt,
        strider_mod_den_offentlige_orden = Sandt
    )
    (
        beskyttet_lære.er_beskyttet_efter_par67()
        && beskyttet_foretagelse.er_beskyttet_efter_par67()
        && uden_overbevisningssammenhæng.er_beskyttet_efter_par67() == Falskt
        && imod_sædeligheden.er_beskyttet_efter_par67() == Falskt
        && imod_den_offentlige_orden.er_beskyttet_efter_par67() == Falskt
    )
}

| rettigheder_par70_dækker_begge_grunde_og_begge_virkninger() -> {
    = trosbetinget_borgerlig_rettighedsberøvelse = Par70Sag(
        grund = Trosbekendelse,
        virkning = BerøvelseAfRettighed(rettighed = BorgerligRettighed),
        virkningen_sker_på_grund_af_grunden = Sandt
    )
    = afstamningsbetinget_politisk_rettighedsberøvelse = Par70Sag(
        grund = AfstamningSomLigebehandlingsgrund,
        virkning = BerøvelseAfRettighed(rettighed = PolitiskRettighed),
        virkningen_sker_på_grund_af_grunden = Sandt
    )
    = trosbetinget_borgerpligtsunddragelse = Par70Sag(
        grund = Trosbekendelse,
        virkning = UnddragelseFraAlmindeligBorgerpligt,
        virkningen_sker_på_grund_af_grunden = Sandt
    )
    = uafhængig_borgerpligtsunddragelse = Par70Sag(
        grund = AfstamningSomLigebehandlingsgrund,
        virkning = UnddragelseFraAlmindeligBorgerpligt,
        virkningen_sker_på_grund_af_grunden = Falskt
    )
    (
        trosbetinget_borgerlig_rettighedsberøvelse.opfylder_par70() == Falskt
        && afstamningsbetinget_politisk_rettighedsberøvelse.opfylder_par70() == Falskt
        && trosbetinget_borgerpligtsunddragelse.opfylder_par70() == Falskt
        && uafhængig_borgerpligtsunddragelse.opfylder_par70()
    )
}

| rettigheder_par71_adskiller_beskyttede_grunde_fra_lovhjemmel() -> {
    = politisk_begrundet = Frihedsberøvelsessag(
        personkreds = DanskBorger,
        grund = PolitiskOverbevisning,
        har_lovhjemmel = Sandt
    )
    = religiøst_begrundet = Frihedsberøvelsessag(
        personkreds = DanskBorger,
        grund = ReligiøsOverbevisning,
        har_lovhjemmel = Sandt
    )
    = afstamningsbegrundet = Frihedsberøvelsessag(
        personkreds = DanskBorger,
        grund = AfstamningSomFrihedsberøvelsesgrund,
        har_lovhjemmel = Sandt
    )
    = anden_grund_med_lovhjemmel = Frihedsberøvelsessag(
        personkreds = DanskBorger,
        grund = AndenFrihedsberøvelsesgrund,
        har_lovhjemmel = Sandt
    )
    = anden_person_uden_lovhjemmel = Frihedsberøvelsessag(
        personkreds = AndenPerson,
        grund = AndenFrihedsberøvelsesgrund,
        har_lovhjemmel = Falskt
    )
    (
        politisk_begrundet.opfylder_par71_stk1_og_2() == Falskt
        && religiøst_begrundet.opfylder_par71_stk1_og_2() == Falskt
        && afstamningsbegrundet.opfylder_par71_stk1_og_2() == Falskt
        && anden_grund_med_lovhjemmel.opfylder_par71_stk1_og_2()
        && anden_person_uden_lovhjemmel.opfylder_par71_stk1_og_2() == Falskt
    )
}

| rettigheder_par72_dækker_alle_fire_indgreb_med_samme_hovedregel() -> {
    = husundersøgelse_med_retskendelse = Privatlivsindgrebssag(
        indgreb = Husundersøgelse,
        retskendelse_foreligger = Sandt,
        særegen_undtagelse_hjemlet_ved_lov = Falskt
    )
    = beslaglæggelse_med_retskendelse = Privatlivsindgrebssag(
        indgreb = Beslaglæggelse,
        retskendelse_foreligger = Sandt,
        særegen_undtagelse_hjemlet_ved_lov = Falskt
    )
    = papirundersøgelse_med_retskendelse = Privatlivsindgrebssag(
        indgreb = UndersøgelseAfBreveOgAndrePapirer,
        retskendelse_foreligger = Sandt,
        særegen_undtagelse_hjemlet_ved_lov = Falskt
    )
    = kommunikationsbrud_med_retskendelse = Privatlivsindgrebssag(
        indgreb = BrudPåPostTelegrafEllerTelefonhemmeligheden,
        retskendelse_foreligger = Sandt,
        særegen_undtagelse_hjemlet_ved_lov = Falskt
    )
    = husundersøgelse_uden_hjemmel = Privatlivsindgrebssag(
        indgreb = Husundersøgelse,
        retskendelse_foreligger = Falskt,
        særegen_undtagelse_hjemlet_ved_lov = Falskt
    )
    = lovhjemlet_undtagelse = Privatlivsindgrebssag(
        indgreb = Husundersøgelse,
        retskendelse_foreligger = Falskt,
        særegen_undtagelse_hjemlet_ved_lov = Sandt
    )
    (
        husundersøgelse_med_retskendelse.opfylder_par72()
        && beslaglæggelse_med_retskendelse.opfylder_par72()
        && papirundersøgelse_med_retskendelse.opfylder_par72()
        && kommunikationsbrud_med_retskendelse.opfylder_par72()
        && husundersøgelse_uden_hjemmel.opfylder_par72() == Falskt
        && lovhjemlet_undtagelse.opfylder_par72()
    )
}

| rettigheder_par77_dækker_alle_former_og_begge_forholdsregler() -> {
    = trykt_ytring = Ytringssag(form = Tryk)
    = skriftlig_ytring = Ytringssag(form = Skrift)
    = talt_ytring = Ytringssag(form = Tale)
    (
        trykt_ytring.retten_til_at_offentliggøre_tanker_omfatter_formen()
        && skriftlig_ytring.retten_til_at_offentliggøre_tanker_omfatter_formen()
        && talt_ytring.retten_til_at_offentliggøre_tanker_omfatter_formen()
        && forebyggende_ytringsforholdsregel_kan_indføres_efter_par77(Censur) == Falskt
        && forebyggende_ytringsforholdsregel_kan_indføres_efter_par77(AndenForebyggendeForholdsregel) == Falskt
    )
}

| rettigheder_par78_og_par79_bevarer_forskellige_indgrebsbetingelser() -> {
    = offentlig_forsamling_med_fare = Forsamlingssag(
        ubevæbnet = Sandt,
        offentlig = Sandt,
        under_åben_himmel = Sandt,
        fare_for_den_offentlige_fred = Sandt
    )
    (
        forening_kan_dannes_uden_forudgående_tilladelse(LovligtFormål)
        && forening_kan_dannes_uden_forudgående_tilladelse(UlovligtFormål) == Falskt
        && offentlig_forsamling_med_fare.kan_samles_uden_forudgående_tilladelse()
        && offentlig_forsamling_med_fare.politiet_har_ret_til_at_overvære()
        && offentlig_forsamling_med_fare.kan_forbydes_efter_par79()
    )
}

--@label:audit_rettigheder_negativ_afgraensning::meta:rettigheder_negativ_afgraensning_fund--
--@begin:audit_rettigheder_negativ_afgraensning--
| rettigheder_par85_skiller_udtrykkelig_udeladelse_fra_positiv_ret() -> {
    = personlig_frihed = MilitærIndskrænkning(
        bestemmelse = PersonligFrihedPar71,
        følger_af_militære_loves_forskrifter = Sandt
    )
    = foreningsfrihed = MilitærIndskrænkning(
        bestemmelse = ForeningsfrihedPar78,
        følger_af_militære_loves_forskrifter = Sandt
    )
    = forsamlingsfrihed = MilitærIndskrænkning(
        bestemmelse = ForsamlingsfrihedPar79,
        følger_af_militære_loves_forskrifter = Sandt
    )
    = ytringsfrihed = MilitærIndskrænkning(
        bestemmelse = YtringsfrihedPar77,
        følger_af_militære_loves_forskrifter = Sandt
    )
    (
        personlig_frihed.indskrænkning_har_hjemmel_i_par85()
        && foreningsfrihed.indskrænkning_har_hjemmel_i_par85()
        && forsamlingsfrihed.indskrænkning_har_hjemmel_i_par85()
        && ytringsfrihed.indskrænkning_har_hjemmel_i_par85() == Falskt
    )
}
--@end:audit_rettigheder_negativ_afgraensning--

| rettigheder_audit_består() -> (
    rettigheder_par67_kraever_overbevisningssammenhaeng_og_begge_graenser()
    && rettigheder_par70_dækker_begge_grunde_og_begge_virkninger()
    && rettigheder_par71_adskiller_beskyttede_grunde_fra_lovhjemmel()
    && rettigheder_par72_dækker_alle_fire_indgreb_med_samme_hovedregel()
    && rettigheder_par77_dækker_alle_former_og_begge_forholdsregler()
    && rettigheder_par78_og_par79_bevarer_forskellige_indgrebsbetingelser()
    && rettigheder_par85_skiller_udtrykkelig_udeladelse_fra_positiv_ret()
)

= rettigheder_audit_resultat = rettigheder_audit_består()
| rettigheder_audit_holder: rettigheder_audit_resultat -> rettigheder_audit_resultat == Sandt

? rettigheder_audit_holder

Tværgående prøvning

@ sprog da

@ importer ./kapitel - 03
@ importer ./kapitel - 04
@ importer ./kapitel - 05
@ importer ./kapitel - 06
@ importer ./kapitel - 08
@ importer ./kapitel - 09
@ importer ./kapitel - 10
@ importer ./kapitel - 11
@ importer ./grundlov - proevning - faelles

-- Den tværgående prøvning sammenholder kun relationer, som kapitlerne faktisk
-- modellerer. Den indfører ingen skjult rangordning mellem bestemmelser.

= tvaergaaende_folkeafstemninger_fund = GrundlovPrøvningsfund(
    titel = "§§ 42 og 88: forskellige folkeafstemningsmekanismer",
    modellag = Kildemodel,
    udsagnsstatus = Modelresultat,
    prøvningsomfang = Grænseanalyse,
    programhenvisninger = [
        refof(lovforslag_forkastet_ved_folkeafstemning),
        refof(Grundlovsafstemningsresultat::opfylder_godkendelseskravet_i_par88)
    ],
    grundlag = Fortolkningsgrundlag(
        kilder = [grundlov_retsinformation],
        forudsætninger = []
    ),
    resultat = "Samme stemmetal kan forkaste et almindeligt lovforslag efter § 42 uden at godkende en grundlovsændring efter § 88.",
    afgrænsning = "Resultatet viser forskellige tekstlige tærskler og stemmeretninger, ikke at den ene procedure er stærkere."
)

| tvaergaaende_par29_og_par86_bevarer_hvert_sit_retsgrundlag() -> {
    = stadfæstelig_valgretsalderændring = Valgretsalderændring(
        folketinget_har_vedtaget = Sandt,
        folkeafstemning_afholdt = Sandt,
        bestemmelsen_bortfaldet = Falskt
    )
    = dansk_kommunalvalg = Rådsvalgretsalder(rigsdel = Danmark, råd = KommunaltRåd)
    = færøsk_kommunalvalg = Rådsvalgretsalder(rigsdel = Færøerne, råd = KommunaltRåd)
    = grønlandsk_menighedsrådsvalg = Rådsvalgretsalder(rigsdel = Grønland, råd = Menighedsråd)
    (
        valgretsalderændring_kan_stadfæstes(stadfæstelig_valgretsalderændring)
        && dansk_kommunalvalg.retsgrundlag_efter_par86() == FølgerFolketingsvalgretsalderenTilEnhverTid
        && færøsk_kommunalvalg.retsgrundlag_efter_par86() == FastsættesVedLovEllerIHEnholdTilLov
        && grønlandsk_menighedsrådsvalg.retsgrundlag_efter_par86() == FastsættesVedLovEllerIHEnholdTilLov
    )
}

--@label:audit_tvaergaaende_folkeafstemninger::meta:tvaergaaende_folkeafstemninger_fund--
--@begin:audit_tvaergaaende_folkeafstemninger--
| tvaergaaende_par42_og_par88_har_forskellige_taerskeludfald() -> {
    = almindelig_folkeafstemning = Folkeafstemningsresultat(
        mod_stemmer = 35,
        deltagende = 60,
        stemmeberettigede = 100
    )
    = grundlovsafstemning = Grundlovsafstemningsresultat(
        for_stemmer = 35,
        deltagende = 60,
        stemmeberettigede = 100
    )
    (
        lovforslag_forkastet_ved_folkeafstemning(almindelig_folkeafstemning)
        && grundlovsafstemning.opfylder_godkendelseskravet_i_par88() == Falskt
        && grundlovsafstemningens_tilslutningstærskel == Brøk(tæller = 2, nævner = 5)
    )
}
--@end:audit_tvaergaaende_folkeafstemninger--

| tvaergaaende_par20_og_par88_adskiller_alternativ_og_fuld_procedure() -> {
    = suverænitetsforslag_uden_fem_sjettedele = Suverænitetsforslag(
        opbakning = Medlemsopbakning(antal = 149, medlemmer_i_alt = 179),
        almindeligt_flertal_opnået = Sandt,
        regeringen_opretholder_forslaget = Sandt
    )
    = grundlovsforslag_uden_nyvalg = Grundlovsforslagsforløb(
        første_folketing_har_vedtaget = Sandt,
        regeringen_vil_fremme_sagen = Sandt,
        nyvalg_til_folketinget_udskrevet = Falskt,
        det_følgende_folketing_har_vedtaget = Sandt,
        skikkelse_ved_genvedtagelsen = UændretSkikkelse
    )
    (
        suverænitetsforslagets_procedure(suverænitetsforslag_uden_fem_sjettedele) == ForelæggesFolketingsvælgerne
        && grundlovsforslag_uden_nyvalg.opfylder_forslagsforløbet_i_par88() == Falskt
        && suverænitetskrav == Brøk(tæller = 5, nævner = 6)
    )
}

| tvaergaaende_par32_og_par89_deler_nyvalg_som_ophoershaendelse() -> {
    = mandat_før_nyvalg = Mandatforhold(
        nyvalg_afholdt = Falskt,
        valgbarhed_bevaret = Sandt
    )
    = mandat_efter_nyvalg = Mandatforhold(
        nyvalg_afholdt = Sandt,
        valgbarhed_bevaret = Sandt
    )
    = overgang_før_nyvalg = Grundlovsovergang(fase = FørNyvalgEfterKapitelIV)
    = overgang_efter_nyvalg = Grundlovsovergang(fase = EfterNyvalgEfterKapitelIV)
    (
        eksisterende_mandat_består(mandat_før_nyvalg)
        && eksisterende_mandat_består(mandat_efter_nyvalg) == Falskt
        && overgang_før_nyvalg.grundloven_er_i_kraft_efter_par89()
        && overgang_før_nyvalg.den_senest_valgte_rigsdag_består_efter_par89()
        && overgang_efter_nyvalg.den_senest_valgte_rigsdag_består_efter_par89() == Falskt
        && overgang_efter_nyvalg.de_tidligere_rigsdagsbestemmelser_er_i_kraft_efter_par89() == Falskt
    )
}

| tvaergaaende_par57_og_par77_bevarer_forskellige_ansvarsmekanismer() -> {
    = uden_samtykke = Ytringsansvarssag(folketingets_samtykke = IkkeGivet)
    = med_samtykke = Ytringsansvarssag(folketingets_samtykke = Givet)
    = talt_ytring = Ytringssag(form = Tale)
    (
        ansvar_uden_for_folketinget_for_ytring_opfylder_par57(uden_samtykke) == Falskt
        && ansvar_uden_for_folketinget_for_ytring_opfylder_par57(med_samtykke)
        && talt_ytring.offentliggørelse_er_under_ansvar_for_domstolene()
    )
}

| tvaergaaende_par63_og_par71_bevarer_generel_og_saerlig_proevelse_adskilt() -> {
    = øvrighedssag = Øvrighedsgrænsesag(
        øvrighedens_befaling_foreløbigt_efterkommet = Sandt
    )
    = udlændingelovssag = AdministrativFrihedsberøvelse(
        hører_til_strafferetsplejen = Falskt,
        beslutning = IkkeBesluttetAfDømmendeMyndighed,
        har_hjemmel_i_udlændingelovgivningen = Sandt,
        begærer = DenFrihedsberøvede,
        prøvelsesvej = AlmindeligeDomstole
    )
    (
        øvrighedssag.kan_påkendes_af_domstolene_efter_par63_stk1()
        && udlændingelovssag.prøvelsespligt_indtræder_efter_par71_stk6() == Falskt
    )
}

| tvaergaaende_audit_består() -> (
    tvaergaaende_par29_og_par86_bevarer_hvert_sit_retsgrundlag()
    && tvaergaaende_par42_og_par88_har_forskellige_taerskeludfald()
    && tvaergaaende_par20_og_par88_adskiller_alternativ_og_fuld_procedure()
    && tvaergaaende_par32_og_par89_deler_nyvalg_som_ophoershaendelse()
    && tvaergaaende_par57_og_par77_bevarer_forskellige_ansvarsmekanismer()
    && tvaergaaende_par63_og_par71_bevarer_generel_og_saerlig_proevelse_adskilt()
)

= tvaergaaende_audit_resultat = tvaergaaende_audit_består()
| tvaergaaende_audit_holder: tvaergaaende_audit_resultat -> tvaergaaende_audit_resultat == Sandt

? tvaergaaende_audit_holder

Samlet prøvningsindgang

@ sprog da

-- Tynd samlet indgang til prøvningen af Grundlovens kildemodel. De konkrete
-- fortolkningsvalg prøves særskilt i grundlov-fortolkninger.scenario.runa.

@ importer ./grundlov - bestemmelser.audit
@ importer ./grundlov - procedurer.audit
@ importer ./grundlov - rettigheder.audit
@ importer ./grundlov - tvaergaaende.audit

| bestemmelser_audit_er_samlet: bestemmelser_audit_består() -> bestemmelser_audit_består() == Sandt
| procedurer_audit_er_samlet: procedurer_audit_består() -> procedurer_audit_består() == Sandt
| rettigheder_audit_er_samlet: rettigheder_audit_består() -> rettigheder_audit_består() == Sandt
| tvaergaaende_audit_er_samlet: tvaergaaende_audit_består() -> tvaergaaende_audit_består() == Sandt

= samlet_grundlovsaudit_resultat = (
    bestemmelser_audit_består()
    && procedurer_audit_består()
    && rettigheder_audit_består()
    && tvaergaaende_audit_består()
)
| samlet_grundlovsaudit_holder: samlet_grundlovsaudit_resultat -> samlet_grundlovsaudit_resultat == Sandt

? bestemmelser_audit_er_samlet
? procedurer_audit_er_samlet
? rettigheder_audit_er_samlet
? tvaergaaende_audit_er_samlet
? samlet_grundlovsaudit_holder

? all -> {
    @ skriv("Alle målrettede grundlovsprøvninger holder.")
} else {
    @ skriv("En eller flere målrettede grundlovsprøvninger fejlede.")
}