Child Care Subsidy Example
The Child Care Subsidy (CCS) is a financial assistance to help families with the cost of child care. For example, the amount given by the Australian Government depends on the family circumstances. In this example, we explore different criteria to define a fair distribution of the child care subsidy. Each criterion is defined by a pipeline, as described in the next sections.
This project includes an executable example of Child Care Subsidy pipelines. The script
makeall.sh
creates the file tiles
, which is an executable JAR file that can be directly
executed in Linux. Its input is a YAML configuration file, like the
configuration file provided for the unit tests. A simplified version is
shown below.
---
## Tiles (https://julianmendez.github.io/tiles/)
## Actors for this scenario
actors:
family A: .
## Resources for this scenario
resources:
subsidy 100: .
## Number of children in each family.
actor_children:
family A: 2
## Number of guardians in each family.
actor_adults:
family A: 2
## Total income in each family.
actor_income:
family A: 2000
## The value of each resource.
resource_value:
subsidy 100: 100
## The resources received by the family, checked by the pipeline.
outcome:
family A: subsidy 100
## Pipelines that can test the provided data.
pipelines:
CcsNoSubsidyPipeline: .
CcsPerChildPipeline: .
CcsPerFamilyPipeline: .
CcsSingleGuardianPipeline: .
This example is modeled with Tiles, where each actor is a family. The families (actors
)
and subsidies (resources
) have identifiers. In addition, the resources have some value (
resource_value
). The assignments (outcome
) relate actors with resources. Some of the
properties that each family has are: number of adults in the family (actor_adults
) and
number of children in the family (actor_children
). All the pipelines to be tested have
their own section (pipelines
).
Tiles used
Tile | Class |
---|---|
all-actor (a) | AllActorTile |
(a) received (m) | ReceivedSigmaPTile |
(m) all-satisfy (p) b | AllSatisfyPTile |
(m) all-equal b | AllEqualTile |
(a) p (m) | AttributePTile |
(a) p ? (a) | FilterActorTile |
(m0), (m1) all-at-least b | AllAtLeastTile |
(m0), (m1) f (m0,m1) (m) | SigmaTile |
b0, b1 f (b0,b1) b | CombineBooleanTile |
No Child Care Subsidy
This is the No Subsidy Pipeline. In this case, no subsidy is given to any family.
graph LR
all-actor(all-actor) --> received
received(received) --> all-satisfy-0(all-satisfy m=0)
Child Care Subsidy Per Child Pipeline
This is the Per Child Pipeline. In this case, the amount of money given to each family depends on the number of children in the family.
graph LR
all-actor(all-actor) --> received
all-actor --> children
received(received) --> m0/m1
children(children) --> m0/m1
m0/m1(m0 / m1) --> all-equal(all-equal)
Child Care Subsidy Per Family Pipeline
This is the Per Family Pipeline. In this case, the amount of money given to each family is the same, regardless of the number of children in the family.
graph LR
all-actor(all-actor) --> received
received(received) --> all-equal(all-equal)
Child Card Subsidy to Single Guardian Pipeline
This is the Single Guardian Pipeline. In this case, the subsidy is only granted to families having a single guardian.
graph LR
all-actor(all-actor) --> adults-1
all-actor --> adults-2
adults-1(adults a0 = 1?) --> received-1
adults-2(adults a1 > 1?) --> received-0
received-1(received) --> all-equal
received-0(received) --> all-satisfy-0
all-equal(all-equal) --> and(and)
all-satisfy-0(all-satisfy m=0) --> and