SCD Pre_PetriNets {
    // Add AL MM

    Class LHS{
        constraint : Expression {
            target_upper_cardinality = 1
        }
        upper_cardinality = 1
        lower_cardinality = 1
    }
    Class NAC{}
    Class Pre_Element{
        label : String {
            target_lower_cardinality = 1
            target_upper_cardinality = 1
        }
        constraint : Expression {
            target_upper_cardinality = 1
        }
    }
    Association (LHS, Pre_Element)
    Association (NAC, Pre_Element){
        target_lower_cardinality = 1
    }

    Class Pre_Place{}
    Class Pre_Transition{}
    Class Pre_Natural{}

    Association Pre_P2T(Pre_Place, Pre_Transition) {}
    Association Pre_T2P(Pre_Transition, Pre_Place) {}

    Association Pre_Place_tokens(Pre_Place, Pre_Natural) {
        name = "Pre_tokens"
        target_upper_cardinality = 1
    }
    Association Pre_P2T_weight(Pre_P2T, Pre_Natural) {
        name = "Pre_weight"
        target_upper_cardinality = 1
    }
    Association Pre_T2P_weight(Pre_T2P, Pre_Natural) {
        name = "Pre_weight"
        target_upper_cardinality = 1
    }

    Inheritance (Pre_Place, Pre_Element) {}
    Inheritance (Pre_Natural, Pre_Element) {}
    Inheritance (Pre_Transition, Pre_Element) {}
    Inheritance (Pre_P2T, Pre_Element) {}
    Inheritance (Pre_Place_tokens, Pre_Element) {}
    Inheritance (Pre_P2T_weight, Pre_Element) {}
    Inheritance (Pre_T2P_weight, Pre_Element) {}
}

SCD Post_PetriNets{
    // Add AL MM

    Class RHS{
        action : FunctionDefinition
        upper_cardinality = 1
        lower_cardinality = 1
    }

    Class Post_Element {
        label : String {
            target_lower_cardinality = 1
            target_upper_cardinality = 1
        }
        value : Expression {
            target_upper_cardinality = 1
        }
    }

    Class Post_Place{}
    Class Post_Transitions{}
    Class Post_Natural{}

    Association Post_P2T(Post_Place, Post_Transition) {}
    Association Post_T2P(Post_Transition, Post_Place) {}

    Association (Post_Place, Post_Natural) {
        name = "Post_tokens"
        target_upper_cardinality = 1
    }

    Association (Post_P2T, Post_Natural) {
        name = "Post_weight"
        target_upper_cardinality = 1
    }

    Association (Post_T2P, Post_Natural) {
        name = "Post_weight"
        target_upper_cardinality = 1
    }

    Inheritance (Post_Place, Post_Element) {}
    Inheritance (Post_Natural, Post_Element) {}
    Inheritance (Post_Transition, Post_Element) {}
    Inheritance (Post_P2T, Post_Element) {}
    Inheritance (Post_Place_tokens, Post_Element) {}
    Inheritance (Post_P2T_weight, Post_Element) {}
    Inheritance (Post_T2P_weight, Post_Element) {}
}
